Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
3bedce01
Kaydet (Commit)
3bedce01
authored
Agu 08, 1996
tarafından
Guido van Rossum
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
removed old file
üst
1a62311c
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
0 additions
and
122 deletions
+0
-122
make_aix_so
Modules/make_aix_so
+0
-122
No files found.
Modules/make_aix_so
deleted
100755 → 0
Dosyayı görüntüle @
1a62311c
#!/bin/ksh
#################################
# AIX shared library helper #
#################################
# ========================================================================
# FILENAME: make_aix_so
# MODULE FOR: standalone executable
# PLATFORM: AIX (specific)
# DESCRIPTION: Creates a shareable .o from a pre-compiled (unshared)
# .o file
# ARGUMENTS: Same as for "ld". The -bM, -bE, -bI, -H, -T, and -lc
# arguments of "ld" will be supplied by this script.
# NOTES: 1. Currently specific to the building of Python
# interpreter shared objects, in that the entry
# point name is hardcoded based on the object file
# name (the "mathmodule.o" file will expect an
# entry point of "initmath"). This could be remedied
# by the support (or simple expectation) of a "-e"
# argument.
# 2. The resulting shared object file is left in the
# current directory with the extension .so. It may
# need to be changed to have a .o extension before
# it is usable. (At least, Python expects it to
# have the .o extension, but this is simply because
# python wants it that way -- it COULD probably be
# called anything at all).
# HISTORY: Manus Hand (mhand@csn.net) -- Initial code -- 6/24/96
# ========================================================================
# ========================================================================
# SET UP VARIABLES FOR USE IN THIS SCRIPT
# ------------------------------------------------------------------------
# Note that the setting of "entry" is Python-build specific. This script
# is not general-purpose for that reason (although support for a "-e"
# argument to it could be added, making it usable for any AIX application)
# ========================================================================
objfile
=
$1
shift
filename
=
`
echo
$objfile
|
sed
-e
"s:.*/
\(
[^/]*
\)
$:
\1
:"
-e
"s/
\.
.*
$/
/"
`
entry
=
init
`
echo
$filename
|
sed
"s/module.*//"
`
ldargs
=
"-e
$entry
-bE:
$filename
.exp -bM:SRE -T512 -H512 -lc
$objfile
$*
"
tmpfile
=
.py_
$$
# ======================================================================
# EXPORT LIST GENERATION
# ----------------------------------------------------------------------
# For the Python modules, this COULD be much simpler, since we know the
# only exported variable is ".$entry" ("entry" was assigned just above).
# However, the approach used here for export file generation is more
# generic and will support all .o's, not just properly formatted Python-
# importable modules. Here is the rule: any "extern" symbol name which
# appears in the # output of "nm" which IS resolved (i.e., which does
# NOT have an address of zero) should go into the export list. Read
# each line from a temp file containing these symbols. If it begins
# with a dot, then add it to the list being built. If it does not, then
# see if the same symbol, with the dot prepended, also appears in the
# list. If so, DON'T include the current symbol (the one without the
# prepended dot).
# ======================================================================
exec
3>&1 1>
$filename
.exp
echo
"#!
$objfile
"
nm
$objfile
|
grep
"|extern|"
|
grep
-v
" 0|extern|"
|
cut
-f1
-d
"|"
>
$tmpfile
while
read
line
;
do
echo
"
$line
"
|
cut
-c1
|
read
prefix
if
[
"
$prefix
"
=
"."
]
;
then
echo
"
$line
"
else
grep
"^
\.
$line
"
$tmpfile
>
/dev/null
if
[
$?
!=
0
]
;
then
echo
"
$line
"
;
fi
;
fi
;
done
<
$tmpfile
rm
$tmpfile
# ===============================================================
# IMPORT LIST AND SHARED OBJECT FILE GENERATION
# ---------------------------------------------------------------
# Send all output to the to-be-built import file, starting it off
# with the required "#!" line (which tells it in which loaded
# binary these symbols are to be found at runtime). Then attempt
# to ld the object using only the export list built above, and
# hide the stderr output from "ld". If the ld fails with status
# code 8 (and in the case of the Python modules, it always does,
# since each need some symbols from the statically linked portion
# of the interpreter), this is because an import list should be
# given containing the symbols which are unresolved. The symbols
# will have been sent to stdout as a side-effect of the failed ld
# command, so by redirecting the stdout output, they will have
# magically been put into the import file being built. Then we
# simply call ld again with both the import and export lists.
# ===============================================================
exec
1>
$filename
.imp
echo
"#!python"
ld
$ldargs
2>/dev/null
status
=
$?
exec
1>&3
# ================================================================
# GUIDO: If you want to separate the generation of the import and
# export lists from the creation of the .so file, here's where the
# break should be made -- in my mail I mentioned that some of this
# script belongs in the pre-static link stage of the make and some
# belongs after it. As I said, here is the dividing line. Now,
# of course, if there is a module which needs NO statically linked
# symbols -- but then again, there can't be, because they all need
# initmodule4() -- the "ld" which is ABOVE this line may actually
# have succeeded, so the "if" below will fail, but of course,
# if you separate the script at this point, you won't care about
# such things.
# ================================================================
if
[
$status
=
8
]
;
then
ld
$ldargs
$filename
.imp
;
fi
# ======================================================================
# GUIDO: Remember that at this point, the files (assuming you leave the
# arguments to LDSHARED totally unchanged) are still named with a .so
# extension. However, Python looks for them with a .o extension. You
# can either change this in the core code (#ifdef _AIX) so that it looks
# for an .so or you can do what I did, which is rename them to .o's when
# they get mv'ed by the sharedinstall make rule. (Actually, I did it by
# hand, but you'd do it in sharedinstall.
# =======================================================================
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment