diff options
Diffstat (limited to 'sys-devel/native-cctools/files')
-rw-r--r-- | sys-devel/native-cctools/files/aix-2/ld | 139 | ||||
-rw-r--r-- | sys-devel/native-cctools/files/aix-2/mkexpfile | 70 | ||||
-rw-r--r-- | sys-devel/native-cctools/files/aix-2/nm | 6 | ||||
-rw-r--r-- | sys-devel/native-cctools/files/ld-aix-1 | 141 | ||||
-rw-r--r-- | sys-devel/native-cctools/files/ld-aix-2 | 139 |
5 files changed, 495 insertions, 0 deletions
diff --git a/sys-devel/native-cctools/files/aix-2/ld b/sys-devel/native-cctools/files/aix-2/ld new file mode 100644 index 000000000000..d4b637c03836 --- /dev/null +++ b/sys-devel/native-cctools/files/aix-2/ld @@ -0,0 +1,139 @@ +#! /usr/bin/env /bin/ksh +# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2 +# $Id$ + +# Upon '-soname' and similar flags, create a "shared library" on AIX being an +# archive file containing an Import File and the shared object file, as in: +# http://lists.gnu.org/archive/html/libtool/2011-01/msg00023.html +# with updates in: +# http://lists.gnu.org/archive/html/libtool/2011-02/msg00000.html +# +# This helper script is meant not depend on anything Gentoo specific. + +ld=/usr/ccs/bin/ld +ar=/usr/ccs/bin/ar +strip=/usr/ccs/bin/strip +dump=/usr/sbin/dump +awk=/usr/bin/awk +rm=/usr/bin/rm +mkdir=/usr/bin/mkdir +mv=/usr/bin/mv +ln=/usr/bin/ln + +oldargs= +output= +soname= +newargs= +OBJECT_MODE=${OBJECT_MODE:-32} + +while [[ $# -gt 0 ]] +do + arg=$1 + shift + oldargs="${oldargs} '${arg}'" + case ${arg} in + -o) + newargs="${newargs} -o '$1'" + output=$1 + oldargs="${oldargs} '$1'" + shift + ;; + -bM:SRE) + newargs="${newargs} '-G' '-bernotok'" + ;; + -soname=*) + soname=${arg#-soname=} + ;; + -h*) + soname=${arg#-h} + ;; + -soname|-h) + soname=$1 + shift + ;; + -b32) + newargs="${newargs} '${arg}'" + OBJECT_MODE=32 + ;; + -b64) + newargs="${newargs} '${arg}'" + OBJECT_MODE=64 + ;; + *) + newargs="${newargs} '${arg}'" + ;; + esac +done + +if [[ -z ${output} || -z ${soname} ]]; then + eval "exec ${ld} ${oldargs}" + exit 1 +fi + +# Running ld against the orginal target file to retain +# ld error message when there's a problem with it: +eval "${ld} -o '${output}' ${newargs}" || exit 1 + +workdir="${output}.$$" + +${rm} -rf "${workdir}" || exit 1 +trap "${rm} -rf '${workdir}'" 0 + +case ${soname} in +*\(*\)) + shro=${soname#*\(} + shro=${shro%\)} + shri=${shro%.*}.imp + ;; +*\[*\]) + shro=${soname#*\[} + shro=${shro%\]} + shri=${shro%.*}.imp + ;; +none) # loadable only module, not linkable: no import file + shro='shr.o' + soname="${output##*/}(${shro})" + shri= + ;; +auto) + shro='shr.o' + soname=${output##*/} + if [[ ${soname} == lib*.so* ]]; then + # linkable library: need import file + shri=${shro%.*}.imp + else + # loadable only module, not linkable: no import file + shri= + fi + soname="${soname}(${shro})" + ;; +*) + shro='shr.o' + shri=${shro%.*}.imp + soname="${soname}(${shro})" + ;; +esac + +export OBJECT_MODE + +${mkdir} "${workdir}" || exit 1 +${strip} -e "${output}" || exit 1 +if [[ -n ${shri} ]]; then + ${dump} -Tv "${output}" > "${workdir}"/syms || exit 1 + ${awk} ' + BEGIN { + print "#! '"${soname}"'" + print "# '"${OBJECT_MODE}"'" + } + { + if ($4 == "EXP" || $4 == "ImpExp") { + print $8 + } else + if ($4 == "wEXP") { + print $8" weak" + } + }' <"${workdir}"/syms > "${workdir}"/${shri} || exit 1 +fi +${mv} "${output}" "${workdir}/${shro}" || exit 1 +${ar} rc "${output}" ${shri:+"${workdir}/${shri}"} "${workdir}/${shro}" || exit 1 +exit 0 diff --git a/sys-devel/native-cctools/files/aix-2/mkexpfile b/sys-devel/native-cctools/files/aix-2/mkexpfile new file mode 100644 index 000000000000..4e79e4647b06 --- /dev/null +++ b/sys-devel/native-cctools/files/aix-2/mkexpfile @@ -0,0 +1,70 @@ +#! /bin/sh + +nm="${0%mkexpfile}nm" +showwith= +expfile="ld.aix.exports.$$" +srcobjs= + +# /bin/sort does not allow TMPDIR to be longer than 85 characters +test ${#TMPDIR} -le 85 || TMPDIR=/tmp export TMPDIR + +while test $# -gt 0 +do + arg=$1 + shift + + case ${arg} in + --) for arg in "$@" + do + srcobjs="${srcobjs} '${arg}'" + done + break + ;; + --show-with=*) showwith="${arg#--show-with=}" ;; + -o) expfile="${1}"; shift ;; + -o*) expfile="${arg#-o}"; ;; + *) srcobjs="${srcobjs} '${arg}'" ;; + esac +done + +/bin/rm -f "${expfile}" || exit 1 + +if ! type "${nm}" >/dev/null 2>&1 +then + case ${nm} in + *-nm) nm=${nm##*/} ;; # use "powerpc-ibm-aix7.1.0.0-nm" from PATH + */nm|nm) nm=/usr/ccs/bin/nm ;; # native anyway + esac + type "${nm}" >/dev/null || exit 1 # let 'type' yell when necessary +fi + +if "${nm}" -V 2>&1 | /bin/grep 'GNU' >/dev/null +then + eval "${nm}" -Bpg ${srcobjs} | + /bin/awk '{ + if ((($2 == "T") || ($2 == "D") || ($2 == "B") || ($2 == "W")) && (substr($3,1,1) != ".")) { + if ($2 == "W") { + print $3 " weak" + } else { + print $3 + } + } + }' | + /bin/sort -u > "${expfile}" || exit 1 +else + eval "${nm}" -PCpgl ${srcobjs} | + /bin/awk '{ + if ((($2 == "T") || ($2 == "D") || ($2 == "B") || ($2 == "W") || ($2 == "V") || ($2 == "Z")) && (substr($1,1,1) != ".")) { + if (($2 == "W") || ($2 == "V") || ($2 == "Z")) { + print $1 " weak" + } else { + print $1 + } + } + }' | + /bin/sort -u > "${expfile}" || exit 1 +fi + +echo "${showwith}${expfile}" + +exit 0 diff --git a/sys-devel/native-cctools/files/aix-2/nm b/sys-devel/native-cctools/files/aix-2/nm new file mode 100644 index 000000000000..5ba1d650d23a --- /dev/null +++ b/sys-devel/native-cctools/files/aix-2/nm @@ -0,0 +1,6 @@ +#! /bin/sh + +# /usr/bin/sort (used by nm) cannot work with TMPDIR longer than 85 characters. +test ${#TMPDIR} -le 85 || TMPDIR=/tmp export TMPDIR + +exec /usr/ccs/bin/nm ${1+"$@"} diff --git a/sys-devel/native-cctools/files/ld-aix-1 b/sys-devel/native-cctools/files/ld-aix-1 new file mode 100644 index 000000000000..cec06a47bd37 --- /dev/null +++ b/sys-devel/native-cctools/files/ld-aix-1 @@ -0,0 +1,141 @@ +#! /usr/bin/env /bin/ksh +# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2 +# $Id$ + +# Upon '-soname' and similar flags, create a "shared library" on AIX being an +# archive file containing an Import File and the shared object file, as in: +# http://lists.gnu.org/archive/html/libtool/2011-01/msg00023.html +# with updates in: +# http://lists.gnu.org/archive/html/libtool/2011-02/msg00000.html +# +# This helper script is meant not depend on anything Gentoo specific. + +ld=/usr/ccs/bin/ld +ar=/usr/ccs/bin/ar +strip=/usr/ccs/bin/strip +dump=/usr/sbin/dump +awk=/usr/bin/awk +rm=/usr/bin/rm +mkdir=/usr/bin/mkdir +mv=/usr/bin/mv +ln=/usr/bin/ln + +oldargs= +output= +soname= +newargs= +OBJECT_MODE=${OBJECT_MODE:-32} + +while [[ $# -gt 0 ]] +do + arg=$1 + shift + oldargs="${oldargs} '${arg}'" + case ${arg} in + -o) + newargs="${newargs} -o '$1'" + output=$1 + oldargs="${oldargs} '$1'" + shift + ;; + -bM:SRE) + newargs="${newargs} '-G' '-bernotok'" + ;; + -soname=*) + soname=${arg#-soname=} + ;; + -h*) + soname=${arg#-h} + ;; + -soname|-h) + soname=$1 + shift + ;; + -b32) + newargs="${newargs} '${arg}'" + OBJECT_MODE=32 + ;; + -b64) + newargs="${newargs} '${arg}'" + OBJECT_MODE=64 + ;; + *) + newargs="${newargs} '${arg}'" + ;; + esac +done + +if [[ -z ${output} || -z ${soname} ]]; then + eval "exec ${ld} ${oldargs}" + exit 1 +fi + +# Running ld against the orginal target file to retain +# ld error message when there's a problem with it: +eval "${ld} -o '${output}' ${newargs}" || exit 1 + +workdir="${output}.$$" + +${rm} -rf "${workdir}" || exit 1 +trap "${rm} -rf '${workdir}'" 0 + +case ${soname} in +*\(*\)) + shro=${soname#*\(} + shro=${shro%\)} + shri=${shro%.*}.imp + ;; +*\[*\]) + shro=${soname#*\[} + shro=${shro%\]} + shri=${shro%.*}.imp + ;; +none) # loadable only module, not linkable: no import file + shro='shr.o' + soname="${output##*/}(${shro})" + shri= + ;; +auto) + shro='shr.o' + soname=${output##*/} + if [[ ${soname} == lib*.so* ]]; then + # linkable library: need import file + shri=${shro%.*}.imp + else + # loadable only module, not linkable: no import file + shri= + fi + soname="${soname}(${shro})" + ;; +*) + shro='shr.o' + shri=${shro%.*}.imp + soname="${soname}(${shro})" + ;; +esac + +export OBJECT_MODE + +${mkdir} "${workdir}" || exit 1 +${strip} -e "${output}" || exit 1 +if [[ -n ${shri} ]]; then + ${dump} -Tv "${output}" > "${workdir}"/syms || exit 1 + ${awk} ' + BEGIN { + print "#! '"${soname}"'" + print "# '"${OBJECT_MODE}"'" + } + { + if ($6 != "SECdef") { + if ($4 == "EXP" || $4 == "ImpExp") { + print $8 + } else + if ($4 == "wEXP") { + print $8" weak" + } + } + }' <"${workdir}"/syms > "${workdir}"/${shri} || exit 1 +fi +${mv} "${output}" "${workdir}/${shro}" || exit 1 +${ar} rc "${output}" ${shri:+"${workdir}/${shri}"} "${workdir}/${shro}" || exit 1 +exit 0 diff --git a/sys-devel/native-cctools/files/ld-aix-2 b/sys-devel/native-cctools/files/ld-aix-2 new file mode 100644 index 000000000000..1741665d4191 --- /dev/null +++ b/sys-devel/native-cctools/files/ld-aix-2 @@ -0,0 +1,139 @@ +#! /usr/bin/env /bin/ksh +# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2 +# $Id$ + +# Upon '-soname' and similar flags, create a "shared library" on AIX being an +# archive file containing an Import File and the shared object file, as in: +# http://lists.gnu.org/archive/html/libtool/2011-01/msg00023.html +# with updates in: +# http://lists.gnu.org/archive/html/libtool/2011-02/msg00000.html +# +# This helper script is meant not depend on anything Gentoo specific. + +ld=/usr/ccs/bin/ld +ar=/usr/ccs/bin/ar +strip=/usr/ccs/bin/strip +dump=/usr/sbin/dump +awk=/usr/bin/awk +rm=/usr/bin/rm +mkdir=/usr/bin/mkdir +mv=/usr/bin/mv +ln=/usr/bin/ln + +oldargs= +output= +soname= +newargs= +OBJECT_MODE=${OBJECT_MODE:-32} + +while [[ $# -gt 0 ]] +do + arg=$1 + shift + oldargs="${oldargs} '${arg}'" + case ${arg} in + -o) + newargs="${newargs} -o '$1'" + output=$1 + oldargs="${oldargs} '$1'" + shift + ;; + -bM:SRE) + newargs="${newargs} '-G' '-bernotok'" + ;; + -soname=*) + soname=${arg#-soname=} + ;; + -h*) + soname=${arg#-h} + ;; + -soname|-h) + soname=$1 + shift + ;; + -b32) + newargs="${newargs} '${arg}'" + OBJECT_MODE=32 + ;; + -b64) + newargs="${newargs} '${arg}'" + OBJECT_MODE=64 + ;; + *) + newargs="${newargs} '${arg}'" + ;; + esac +done + +if [[ -z ${output} || -z ${soname} ]]; then + eval "exec ${ld} ${oldargs}" + exit 1 +fi + +# Running ld against the orginal target file to retain +# ld error message when there's a problem with it: +eval "${ld} -o '${output}' ${newargs}" || exit 1 + +workdir="${output}.$$" + +${rm} -rf "${workdir}" || exit 1 +trap "${rm} -rf '${workdir}'" 0 + +case ${soname} in +*\(*\)) + shro=${soname#*\(} + shro=${shro%\)} + shri=${shro%.*}.imp + ;; +*\[*\]) + shro=${soname#*\[} + shro=${shro%\]} + shri=${shro%.*}.imp + ;; +none) # loadable only module, not linkable: no import file + shro='shr.o' + soname="${output##*/}(${shro})" + shri= + ;; +auto) + shro='shr.o' + soname=${output##*/} + if [[ ${soname} == lib*.so* ]]; then + # linkable library: need import file + shri=${shro%.*}.imp + else + # loadable only module, not linkable: no import file + shri= + fi + soname="${soname}(${shro})" + ;; +*) + shro='shr.o' + shri=${shro%.*}.imp + soname="${soname}(${shro})" + ;; +esac + +export OBJECT_MODE + +${mkdir} "${workdir}" || exit 1 +${strip} -e "${output}" || exit 1 +if [[ -n ${shri} ]]; then + ${dump} -Tv "${output}" > "${workdir}"/syms || exit 1 + ${awk} ' + BEGIN { + print "#! '"${soname}"'" + print "# '"${OBJECT_MODE}"'" + } + { + if ($4 == "EXP" || $4 == "ImpExp") { + print $8 + } else + if ($4 == "wEXP") { + print $8" weak" + } + }' <"${workdir}"/syms > "${workdir}"/${shri} || exit 1 +fi +${mv} "${output}" "${workdir}/${shro}" || exit 1 +${ar} rc "${output}" ${shri:+"${workdir}/${shri}"} "${workdir}/${shro}" || exit 1 +exit 0 |