| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Android's linker will actually do relative paths just fine; the problem
is that it won't search from the current directory, only on
/vendor/lib, /system/lib, and whatever is in LD_LIBRARY_PATH.
While the core handles that just fine, bits of CPAN rather rightfully
expect this to work:
use lib 'foo' # puts foo/ in @INC
use My::Module::In::Foo; # calls dlopen() with foo/My/Module/...
# which will likely fail
So we take this route instead.
|
|
|
|
|
|
|
|
|
|
| |
The linker ignores all the flags and works as if under RTLD_LOCAL,
so don't give users the headache of seeing warnings ala
"Can't make loaded symbols global on this platform while loading %s"
when using a module that subclasses DynaLoader and defines
dl_load_flags to anything else.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This is somewhat obscure. Previously, mod2fname would've tried
accessing $Config{dlext} each time it was called. The reason this
can be problematic is that mod2fname can be called during global destruction,
after %Config is freed but before its magic is. This was causing
Devel::GlobalDestruction's tests to fail on builds with -Dd_libname_unique.
This commit grabs the data we need when DynaLoader.pm is being built in
DynaLoader_pm.PL, so it no longer need to depend on %Config.
|
|
|
|
|
| |
Original patch by Alan, modified by Tony Cook to remove unused return
types.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Android's linker has some unusual behavior, in that it only uses
the basename of a library in its cache. That means that, as far as
dlopen() is concerned, the libraries for Hash::Util and List::Util,
both of which are called Util.so, are the same.
This commit teaches DynaLoader about d_libname_unique. When
defined, it signals DynaLoader define a mod2fname sub that renames
the .so files to something "unique" -- so for example,
Hash/Util/Util.so becomes Hash/Util/PL_Hash__Util.so.
|
| |
|
|
|
|
|
| |
my previous commit moved some var declarations from CODE: to PREINIT:;
but I was slightly overzealous and moved a non-declaration line too.
|
|
|
|
|
|
|
|
|
|
|
| |
A recent change to the typmap definitions makes a var declaration
generate code. Move this declaration from CODE: to PREINIT: to avoid a
'Mixed declarations' compiler error.
This was spotted in dl_hpux.xs by bulk88, which I've blindly fixed.
From visual inspection there were also declarations in dl_vms.xs
that needed moving (although in that case it dosen't trigger the typemap
code emission).
|
|
|
|
|
| |
My commit from yesterday, 860b3d937d9b004a7de4b684765ab75006c71f00,
inadvertently included c99-ish mixed declarations and code.
|
| |
|
|
|
|
|
| |
GNU DLD was a library that provided dynamic linking on a.out based systems.
The last release was in 1996, and it has been superseded by dlopen.
|
| |
|
|
|
|
|
|
|
|
|
| |
Building with -DPERL_GLOBAL_STRUCT_PRIVATE uses alternative implementations
of Perl_my_cxt_init() and Perl_my_cxt_index() which store the pointer to the
extension name. For a dynamically loaded shared object this is a pointer to
memory which will be released if that shared object is unloaded, meaning that
any *other* module which calls Perl_my_cxt_index() will likely attempt a read
of unmapped memory.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
DynaLoader::dl_unload_file() is only called automatically to unload all
loaded shared objects if the perl interpreter was built with the C macro
DL_UNLOAD_ALL_AT_EXIT defined. The documentation has been incorrectly
stating that it is always called since dl_unload_file() was added in v5.6.0
When dl_unload_file() was first added by commit abb9e9dca5a5f121 (March 1st,
2000), it was always called at exit, if available. It was made conditional on
DL_UNLOAD_ALL_AT_EXIT being defined by commit 23d2500b2b45b1be (March 20th,
2000), but the documentation was never updated to reflect this. v5.6.0 was
release on March 22nd, 2000.
|
| |
|
|
|
|
|
|
| |
With one modification suggested by Andy Dougherty; version bump to 1.19.
For: RT #119031
|
| |
|
|
|
|
|
|
|
|
|
| |
BeOS was an operating system for personal computers developed by Be Inc,
initially for their BeBox hardware. The OS Haiku was written as an open source
replacement/continuation for BeOS, and its perl port is current and actively
maintained.
The BeOS port has not been updated since 2004.
|
|
|
|
|
|
|
|
|
|
| |
File::Glob now sets PL_opfreehook. That means that if we unload it we
will leave PL_opfreehook pointing to an invalid address, resulting in
a crash when ops are freed.
I didn’t catch this because the tests are skipped on darwin. They
don’t actually need to be, at least under recent versions, so I modi-
fied the skip code.
|
|
|
|
|
|
|
| |
This finishes the removal of register declarations started by
eb578fdb5569b91c28466a4d1939e381ff6ceaf4. It neglected the ones in
function parameter declarations, and didn't include things in dist, ext,
and lib, which this does include
|
|
|
|
| |
(Suggested by Tony Cook.)
|
| |
|
|
|
|
|
|
|
| |
These assorted static allocated variables were in RW memory in the perl
image. Move them to RO memory so they are sharable between different
Perl processes by the OS. The lack of consting in Win32 Dynaloader traces
to commit 0a753a76406 . S_Internals_V traces to commit 4a5df386486 .
|
|
|
|
|
| |
MPE/iX was a business-oriented minicomputer operating system made by
Hewlett-Packard. Support from HP terminated at the end of 2010.
|
|
|
|
|
| |
VM/ESA was a mainframe OS. IBM ended service on it in June 2003. It was
superseded by Z/VM.
|
|
|
|
|
|
|
| |
See RT #114198. DynaLoader was warning about somewhat dubious use of
RETVAL with a CODE section but without an OUTPUT section. This fixes
that problem, but I have obviously not been able to test on all affected
operating systems.
|
| |
|
|
|
|
| |
C++ needs an explicit type on the handler.
|
|
|
|
| |
in view of 2e3468793982.
|
|
|
|
|
|
| |
With 5.15.2 and the new xubpp, DynaLoader symbols were XS_INTERNAL, before
they were effectively XS_EXTERNAL. This broke B::C and possibly other
embedded apps which link to DynaLoader functions.
|
|
|
|
|
|
| |
For threaded builds on platforms using dlopen() for dynamic loading, this
should reduce object size, and slightly reduce CPU usage when loading
extensions.
|
|
|
|
| |
DynaLoader after 0a0b6c96e6.
|
|
|
|
|
|
|
|
|
|
| |
Before 0a0b6c96e6042658aa123b3990724be593a2bb63, dl_expandspec was
an autoloaded function that would never be called if an XS version
was already loaded. Without autoloading in DynaLoader anymore,
the pure Perl version gets loaded first, which causes trouble if
the XS version is what's expected. It looks as though VMS is the
only platform that has an XS version, so just avoid declaring the
Perl version there.
|
|
|
|
|
| |
Now that AUTOLOAD has been removed from DynaLoader, some TODO
tests are passing, so unmark them as TODO.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
DynaLoader currently uses Autoloader. This was an optimization going
back to perl 5.000 in 1994. However, this implementation detail leaks in
a rather troublesome way.
DynaLoader is used by subclassing it. Because of this, when you call
some undefined method on an instance of any class that derives from
DynaLoader (directly or indirectly) you do not get this error message:
Can't locate object method "undefined_method" via package "Foo"
But this rather cryptic error:
Can't locate auto/Foo/undefined_m.al in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0
/usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10
/usr/local/lib/site_perl .)
This is totally incomprehensible for anyone who isn't familiar with
what's going on. It was rather a premature optimization anyway if you
ask me, on my machine it's just 66 non-empty lines of code that are
being autoloaded.
Therefore, I think AutoLoader should be removed from DynaLoader.
|
|
|
|
|
|
|
|
|
| |
# New Ticket Created by (Peter J. Acklam)
# Please include the string: [perl #81882]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=81882 >
Signed-off-by: Abigail <abigail@abigail.be>
|
| |
|
|
|
|
|
|
| |
DynaLoader already has its own preprocessor to filter out code that
is only relevant on other platforms, so use it for the change from
commit cc7e77fd
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
part1: Support the standard cyg dll prefix, which is e.g. needed for FFI's.
Ctypes and C::DynaLib use DynaLoader to find dlls.
part2: With -DUSEIMPORTLIB DynaLoader symbols link against the prefixed
symbol names for the .dll.a importlib, but we need to link against the
symbols directly. We don't link Dynaloader against libperl.dll.a.
Otherwise:
$ g++-4 -o cygperl5_13_4.dll --shared perlsrc.o cygwin.o DynaLoader.o -ldl -lcrypt
Creating library file: libperl.dll.a
DynaLoader.o: In function `XS_DynaLoader_dl_undef_symbols':
ext/DynaLoader/DynaLoader.c:346: undefined reference to `__imp__PL_stack_sp'
ext/DynaLoader/DynaLoader.c:346: undefined reference to `__imp__PL_markstack_ptr'
ext/DynaLoader/DynaLoader.c:346: undefined reference to `__imp__PL_stack_base'
|
|
|
|
|
| |
Core-only modules that have changed from v5.13.7, and dual-life modules
that have changed from v5.13.7 and didn't show up in earlier passes.
|
|
|
|
|
| |
All files have been modified more recently than their tag, rendering
information in the tag redundant.
|
| |
|
|
|
|
|
| |
This fixes the DynaLoader related part of bug 78710
http://rt.perl.org/rt3//Public/Bug/Display.html?id=78710
|
|
|
|
|
| |
Document that all arguments are passed on to the module's bootstrap function,
and the behaviour of the bootstrap function in modules built by xsubpp.
|
|
|
|
|
| |
ExtUtils::MakeMaker removed MacOS support in 6.25, merged to blead in December
2004, so this code is vestigial, and a small maintenance penalty.
|
|
|
|
|
|
| |
-noprototypes (as was always the case on *nix), so no need to explicitly
disable prototype checking in DynaLoader.t any more, i.e. we can revert
a2c4b2d6db383103b96e4733616b17d0a3bb0bd9
|