Use elfwrap :-)
This commit is contained in:
parent
7738020554
commit
e3d00d4584
|
@ -0,0 +1,101 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -u
|
||||||
|
|
||||||
|
# Default output file name:
|
||||||
|
outputfile="a.wrap.o"
|
||||||
|
|
||||||
|
# --32 or --64. Empty by default. To pass to GNU as.
|
||||||
|
bitness=""
|
||||||
|
|
||||||
|
# Print assembler source code to stdout
|
||||||
|
# instead of compiling to ELF object
|
||||||
|
show_source="no"
|
||||||
|
|
||||||
|
fatal () {
|
||||||
|
echo "$0: $@" >&2
|
||||||
|
echo "$0: Type \`$0 -h' to get help" >&2
|
||||||
|
exit 2
|
||||||
|
}
|
||||||
|
|
||||||
|
usage () {
|
||||||
|
echo "$0 [ -64 | -32 ] [ -o outputfile ] [ -s ] files ..."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
files=""
|
||||||
|
collect() {
|
||||||
|
files="$files$1|"
|
||||||
|
}
|
||||||
|
|
||||||
|
processing_options="yes"
|
||||||
|
|
||||||
|
while [ $# != 0 ]; do
|
||||||
|
opt="$1"
|
||||||
|
shift
|
||||||
|
if [ "$processing_options" = yes ]; then
|
||||||
|
case "$opt" in
|
||||||
|
--)
|
||||||
|
processing_options="no"
|
||||||
|
;;
|
||||||
|
-s)
|
||||||
|
show_source="yes"
|
||||||
|
;;
|
||||||
|
-h|--help)
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
-32|--32)
|
||||||
|
bitness="--32"
|
||||||
|
;;
|
||||||
|
-64|--64)
|
||||||
|
bitness="--64"
|
||||||
|
;;
|
||||||
|
-o)
|
||||||
|
[ $# != 0 ] || fatal "Option -o requires an argument"
|
||||||
|
outputfile="$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-*)
|
||||||
|
fatal "Invalid option: $opt"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
collect "$opt"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
collect "$opt"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
if [ -z "$files" ]; then
|
||||||
|
fatal "No files given."
|
||||||
|
fi
|
||||||
|
|
||||||
|
(
|
||||||
|
IFS='|'
|
||||||
|
set -- $files
|
||||||
|
for f in "$@"; do
|
||||||
|
base=`basename -- "$f" | sed -e 's,[^0-9a-zA-Z_],_,g' -e 's,^\([0-9]\),_\1,'`
|
||||||
|
echo ".section .${base}, \"a\", @progbits"
|
||||||
|
echo ".global ${base}_start"
|
||||||
|
echo ".global ${base}_end"
|
||||||
|
echo ".type ${base}_start, @object"
|
||||||
|
echo ".type ${base}_end, @object"
|
||||||
|
echo "${base}_start:"
|
||||||
|
echo ".incbin \"$f\""
|
||||||
|
echo "${base}_end:"
|
||||||
|
echo
|
||||||
|
done
|
||||||
|
) | (
|
||||||
|
if [ "$show_source" = yes ]; then
|
||||||
|
cat
|
||||||
|
else
|
||||||
|
as $bitness -o "$outputfile" --
|
||||||
|
fi
|
||||||
|
)
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
|
@ -11,6 +11,10 @@ unpack-stamp:
|
||||||
dh_illumos_gate --build \
|
dh_illumos_gate --build \
|
||||||
usr/src/uts \
|
usr/src/uts \
|
||||||
usr/src/common
|
usr/src/common
|
||||||
|
# this a shell script generating assembler source files
|
||||||
|
# and passing that source to as.
|
||||||
|
# Default output format is expected to be 32-bit:
|
||||||
|
echo "export ELFWRAP='$(CURDIR)/debian/elfwrap -32'" >> usr/env.sh
|
||||||
touch $@
|
touch $@
|
||||||
|
|
||||||
patch: patch-stamp
|
patch: patch-stamp
|
||||||
|
|
Loading…
Reference in New Issue