| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
Most implementations do not have a problem with two getenv()'s running
simultaneously in different threads. But Posix doesn't require such
good behavior. This adds a simple probe to test the current system.
|
|
|
|
|
|
| |
-fno-stack-protector to hints for amigaos.sh
and haiku.sh (and disable accordingly -fstack-protector* in Configure)
|
|
|
|
|
| |
Integration of 19aaf9297b251db12d as metaconfig unit causes a re-order
(as promised)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On several systems the attempt to determine if we "need va_copy() or
similar" results in a SIGBUS instead of a SIGSEGV because the fault
happens pointing at an io device address.
While reviewing accounting logs during the OpenBSD system build, bluhm@
noticed a core dump and deraadt@ tracked it down.
While researching it was discovered that this is a fairly common case in
other systems as well.
Original diff by deraadt@
|
|
|
|
|
|
|
|
| |
Do not set strict by default on -e or -E
This is a development only feature to allow us to clean up blead.
./Configure -Dusedevel -des -Dusedefaultstrict
|
| |
|
|
|
|
| |
Thank you Karl!
|
| |
|
|
|
|
| |
See https://github.com/Perl/metaconfig/pull/66/
|
|
|
|
| |
Meta is now 100% in sync
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
There were a number of spots that used language more appropriate for an email
address than a web-based tracker.
I noticed this because of the recent 5.30.2 release, which has a perldelta
containing the sentence "If you find any we have missed, send email to
https://github.com/Perl/perl5/issues."
But I think that was because the 5.30.2 branch did not include
8166b4e0bc220e759aa233af54ac1e60cc510f0c.
|
|
|
|
|
|
|
|
| |
Some versions of bash, ksh and dash warn or error, complaining about
unterminated here-docs, while some versions complain about syntax
errors in unrelated parts of the script.
This partially reverts commit 52635202f174c9387aa422c4aa32d12f754d8a33.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I got a notice from Jeff Law <law@redhat.com>:
Your particular package fails its testsuite. This was ultimately
tracked down to a Configure problem. The perl configure script treated
gcc-10 as gcc-1 and turned on -fpcc-struct-return. This is an ABI
changing flag and caused Perl to not be able to interact properly with
the dbm libraries on the system leading to a segfault.
His proposed patch corrected only this one instance of the version
mismatch. Reading the Configure script revealed more issues. This
patch fixes all of them I found.
Please note I do not have GCC 10 available, I tested it by faking the version
with:
--- a/Configure
+++ b/Configure
@@ -4672,7 +4672,7 @@ $cat >try.c <<EOM
int main() {
#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
#ifdef __VERSION__
- printf("%s\n", __VERSION__);
+ printf("%s\n", "10.0.0");
#else
printf("%s\n", "1");
#endif
(cherry picked from commit 6bd6308fcea3541e505651bf8e8127a4a03d22cd, which
was accidentally reverted by commit e849841dca2a8b11119997585f795647c52cdcdf)
|
| |
|
|
|
|
|
| |
C compilers typically issue a warning, but c++ compilers may abort with
an error.
|
|
|
|
|
|
|
| |
The test programs were missing the stdlib.h header, and needed
tweaks to the check() prototype to compile under clang++. These
changes should be fine for C compilers as well, but they have typically
been more forgiving, so shouldn't be affected.
|
|
|
|
|
|
| |
Include the appropriate header and get rid of slightly
incorrect prototype. Change function return type to void
since we don't explicitly return a useful value.
|
|
|
|
|
|
|
| |
For glibc, previous reports were that some functions (such as lchown())
are present in libc, but are unimplemented. That is, they always fail
and set errno=ENOSYS. Unfortunately, the stub test doesn't work under
clang++. Thus use a compile and run test. This should be more reliable.
|
|
|
|
|
| |
Since the test uses exit(), the appropriate header should be
included. clang++ throws an error otherwise.
|
|
|
|
|
|
| |
GitHub issue tracker
The perlbug utility and perlbug@perl.org should no longer be used to submit bug reports or patches.
|
|
|
|
|
|
|
|
| |
A probe for wcrtomb() and one for attribute always inline have been
added, and the ones for:
1) checking if there is a C backtrace facility; and
2) character data alignedness
have been revised
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I got a notice from Jeff Law <law@redhat.com>:
Your particular package fails its testsuite. This was ultimately
tracked down to a Configure problem. The perl configure script treated
gcc-10 as gcc-1 and turned on -fpcc-struct-return. This is an ABI
changing flag and caused Perl to not be able to interact properly with
the dbm libraries on the system leading to a segfault.
His proposed patch corrected only this one instance of the version
mismatch. Reading the Configure script revealed more issues. This
patch fixes all of them I found.
Please note I do not have GCC 10 available, I tested it by faking the version
with:
--- a/Configure
+++ b/Configure
@@ -4672,7 +4672,7 @@ $cat >try.c <<EOM
int main() {
#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
#ifdef __VERSION__
- printf("%s\n", __VERSION__);
+ printf("%s\n", "10.0.0");
#else
printf("%s\n", "1");
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Compiler optimisation meant the could return the wrong result in some
cases.
This wasn't a problem on x86, but on platforms where alignment is
required it caused problems.
Strangely enough d_u32align is "define" in the win32 config files,
on any x64 system (the probe only checked on 32-bit systems), on
ARM and on the one i386 build I checked.
This should have little to no effect on performance, for example,
building:
typedef unsigned long U64;
U64 b64little(unsigned char *p) {
return *p | ((U64)p[1] << 8) | ((U64)p[2] << 16) | ((U64)p[3] << 24)
| ((U64)p[4] << 32) | ((U64)p[5] << 40) | ((U64)p[6] << 48) | ((U64)p[7] << 56);
}
U64 b64big(unsigned char *p) {
return ((U64)*p << 56) | ((U64)p[1] << 48) | ((U64)p[2] << 40) | ((U64)p[3] << 32)
| ((U64)p[4] << 24) | ((U64)p[5] << 16) | ((U64)p[6] << 8) | ((U64)p[7]);
}
unsigned b32little(unsigned char *p) {
return *p | ((unsigned)p[1] << 8) | ((unsigned)p[2] << 16) | ((unsigned)p[3] << 24);
}
unsigned b32big(unsigned char *p) {
return ((unsigned)p[0] << 24) | ((unsigned)p[1] << 16) | ((unsigned)p[2] << 8) | p[3];
}
with:
gcc -O2 -S test.c
produces:
.file "test.c"
.text
.p2align 4,,15
.globl b64little
.type b64little, @function
b64little:
.LFB0:
.cfi_startproc
movq (%rdi), %rax
ret
.cfi_endproc
.LFE0:
.size b64little, .-b64little
.p2align 4,,15
.globl b64big
.type b64big, @function
b64big:
.LFB1:
.cfi_startproc
movq (%rdi), %rax
bswap %rax
ret
.cfi_endproc
.LFE1:
.size b64big, .-b64big
.p2align 4,,15
.globl b32little
.type b32little, @function
b32little:
.LFB2:
.cfi_startproc
movl (%rdi), %eax
ret
.cfi_endproc
.LFE2:
.size b32little, .-b32little
.p2align 4,,15
.globl b32big
.type b32big, @function
b32big:
.LFB3:
.cfi_startproc
movl (%rdi), %eax
bswap %eax
ret
.cfi_endproc
.LFE3:
.size b32big, .-b32big
.ident "GCC: (Debian 6.3.0-18+deb9u1) 6.3.0 20170516"
.section .note.GNU-stack,"",@progbits
so the compiler is smart enough to recognize the unaligned access code
and optimize it on platforms that support it.
MSVC doesn't seem to optimize this, but since Win32 has been built
with d_u32align=define since 2005, this change will make no
difference.
|
| |
|
|
|
|
| |
Needed for the exit function.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This will cause Configure to enter the WHOA block and default to using
sprintf.
Change Gconvert checkit() prototype for [perl #134371].
In the checkit() routine inside Configure, clang++ was taking the
if (strcmp(expect, got)) branch even though the 'expect' and 'got' strings
were identical. A first step in debugging this was to realize that
the checkit() function never returned a value, so relabel it as void.
With clang version 7.0.1-8 (tags/RELEASE_701/final) (Debian),
this change seems to work around the strcmp issue.
Further Configure gconvert probe cleanups for C++. As part of debugging
[perl #134375] and [perl #134371], try to eliminate warnings thrown by
clang++.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When value of a directory (i.e. man1dir) is set to "none" because of:
- '-D' option set on cmdline (i.e. -Dman1dir=none) OR
- because value is reused from previous configure run
And when the prefix is different from the previous configure run(*) then
keep the value of "none". predefined/cached value does not contain the
old prefix so there is no harm in keeping it.
(*): due to another bug this also happens when prefix ends with a
trailing slash
See https://rt.perl.org/Ticket/Display.html?id=134284
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change how/when the trailing '/' from a prefix is removed.
The original code had two problems:
1) it only stripped the trailing slash when value was predefined
(either from -Dprefix=/foo/bar/ or from a previous configure run)
2) when it did strip the value then it also caused 'oldprefix' to
be set. This in turns causes other predefined (/cached) paths to
be ignored.
See https://rt.perl.org/Public/Bug/Display.html?id=134284
|
| |
|
| |
|
|
|
|
| |
This corresponds to metaconfig commit 70210eb08b2643bfce98cfa92a3ee52c613dfa56
|
|
|
|
| |
This also now notes some behavior of setlocale
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This is continuation of commit f8d82a1010 addressing [perl #133760].
Linux systems using the musl C library have memmem, memrchr, strlcat, and
strlcpy, but the prototypes are only visible if _GNU_SOURCE is defined.
This patch makes Configure test both whether the prototype is visible
and whether the C symbol is visible.
Still to be done is automatically adding _GNU_SOURCE if the musl library
is being used -- probably in hints/linux.sh.
|
|
|
|
|
|
|
|
| |
This updates commit ca152fd8207cf53816b1407d5f54f6ea160a3ef8.
Linux systems have memmem, but the prototype in <string.h> is only
visible if __GNU_SOURCE is defined. This version tests for both the
prototype in <string.h> and the symbol in libc. (Thanks to Tony C. for
the suggestion.) (For BSD systems, no extra define is needed.)
|
|
|
|
|
|
| |
This is the same technique as in the metaconfig unit Protochk.U.
See that unit for more usage information. It is a bit clunky,
but does work.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Linux systems have memmem, but the header prototype is only visible if
the C library, but didn't check if the correct prototype is available.
This patch compiles & runs a test program that will fail if the prototype
is needed but not available.
This does not completely close [perl #133760]. The tests for strlcat()
and strlcpy() may also need to be similarly changed. Also, this patch
does not change whether _GNU_SOURCE is defined or not. Presumably that
would be done separately in the linux hints file.
|
|
|
|
|
|
|
|
|
|
| |
The metaconfig probe for <db.h> previously relied on the d_const symbol set
by the "const" probe, so generating Configure here has been done against
metaconfig commit 1204d4627a06b11f16620188f3fa83159ed35fd9 which changes
that.
Thanks to khw++ for pointing out this oversight in my attempt last year to
make the codebase rely on C89.
|
|
|
|
|
|
|
| |
Patch by Sevan Janiyan
Include a hints file for Minix, derived from the NetBSD one but stripped
back to remove most of the legacy parts.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
These tests fail with clang with a missing return in non-void
function warning, and any warning at all causes the types to
default to int. It turns out DB::File doesn't use Configure's
types, but we should report the correct thing in case anyone
accesses them via %Config.
|
| |
|
|
|
|
| |
We are now in sync with perl5-metaconfig/metaconfig@2d3a3017b8d44d778ed765d529ca114924b3ee14
|
|
|
|
|
|
|
|
|
|
|
|
| |
Most of the change here comes from a single unit being moved in the
generated Configure, but there are some substantive changes:
- config_h.SH was missing HAS_DUPLOCALE and d_duplocale
- d_duplocale was also missing from the platform-specific config-var files
This still doesn't quite ensure that rebuilding Configure makes no changes,
because there are differences to nl_langinfo() handling that need a change
in our metaconfig units. That will come next.
|
|
|
|
| |
I am aware that this might break a few tests
|