| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
This patch was submitted in GH issue #20606. When gcc output contains
quoted elements we fail to handle it properly. This tweaks the sed
command to do so.
Fixes #20606.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Two C99 compatibility issues are fixed by these changes: Return
types are made explicit where they previously defaulted to int,
and all called functions are now declared explicitly (either by
including additional headers, or by adding prototypes manually).
This avoids implict ints and implicit function declarations,
both legacy C language features removed in the 1999 revision
of the language.
Verified with an instrumented GCC compiler on GNU/Linux.
|
|
|
| |
ANSI C style function declarations without parameter types are errors with clang-16.
|
|
|
|
|
|
|
|
|
|
|
|
| |
These macros were defined in perl.h using preprocessor conditionals,
but determining wheter I32 is "int" or "long" is pretty hard with
preprocessor, when INTSIZE == LONGSIZE. The Configure script
should know exact underlying type of I32, so it should be able to
determine whether %d or %ld shall be used to format I32 value
more robustly.
Various pre-configured files, such as uconfig.h, are updated to
align with this.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Configure's helper function ./myread is intended to loop until it gets an
acceptable answer. For a couple of cases, an empty string is not acceptable
(eg 'Where is your C library?', if all automated attempts at answering this
have failed). In these cases, if Configure's standard input is /dev/null (or
closed), the shell read returns an empty string, and ./myread repeats the
question.
Before this commit, it would loop infinitely (generating continuous terminal
output). With this commit, we add a retry counter - if it asks the same
question to many times, it aborts Configure. This means that unattended
./Configure runs should now always terminate, as termination with an error
is better than spinning forever.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A default installation of DragonflyBSD doesn't necessarily set the
hostname, resulting in a `uname -a` like:
DragonFly 6.2-RELEASE DragonFly v6.2.2-RELEASE ...
which resulted in osvers being set to "dragonfly", which isn't
especially useful.
So check that $3 is numeric in some sense before using it, falling
back to $2 if it isn't. This should only happen when the hostname
isn't set.
|
|
|
|
|
|
|
| |
With -Duse64bitint on 32-bit machines, UV might be configured
to `uint64_t`. But some Configure tests used $uvtype without including
<inttypes.h>, which may cause compilation error of those tests on
sucn configurations, and eventually make perl not built correctly.
|
|
|
|
|
|
|
| |
There are no macros named PRIXU64. This line seems to date back to
commit 6b356c8efb963846940ef92952cf77e5b86bd65e which renamed shell
variable names to work well with case-insensitive systems,
but could have overdone a bit.
|
|
|
|
|
|
|
|
| |
This allows us to enforce API boundaries and potentially enables
compiler optimisations.
We've been always hiding non-public symbols on Windows. This commit
brings that to the other platforms.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
This reverts commit 39f8eb4a21670e6b973dcfc86d0b1339064f5642.
This is because of a variety of issues discussed #19657 and at the PSC
meeting 064 2022-04-22
https://www.nntp.perl.org/group/perl.perl5.porters/2022/04/msg263670.html
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds a Configure question for whether you want taint support.
It defaults to "yes", so that ./Configure -des will build a perl
which supports taint in the usual way.
If you say "no", then perl is compiled with -DSILENT_NO_TAINT_SUPPORT
so that taint features silently do nothing.
I've submitted a separate pull request on perl/metaconfig,
which adds the underlying metaconfig unit for this question,
which was used to build this Configure script.
|
|
|
|
|
|
| |
"try.c" for (double|longdbl)(inf|nan)bytes seems to lack some
preprocessor directives (probably accidentaly removed) and
caused syntax error if HAS_LONG_DOUBLE is not defined.
|
| |
|
|
|
|
|
| |
Do not advise sending mail to 'perlbug@perl.org', as that now simply
triggers a response redirecting sender to GitHub.
|
|
|
|
|
|
|
|
|
|
| |
Also ensure that the relevant failure error message is output even with
Configure's -s flag, as we shouldn't stay silent for a message that causes
Configure default to aborting.
With these changes, Configure will fail the C99 probe test if passed
-Accflags="-Werror=declaration-after-statement" or
-Accflags="-Werror=long-long"
|
|
|
|
|
|
| |
Probe to see whether we need -std=gnu99 or -std=c99 to get C99 code to
compile. In cflags.SH, remove code that added gcc warning flags that were
compatible with C89 but are not compatible with C99.
|
|
|
|
| |
We also provbe for gcc's earlier syntax, __thread.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On FreeBSD dev_t (and hence the st_dev member of struct stat) is an
unsigned 64-bit integer, and the previous simple PUSHi() corrupted
that.
A previous version of this reflected the st_ino code and implemented
our own number to string conversion, but a system with such a large
st_dev should be assumed to have inttypes.h, and an intmax_t which is
no smaller than st_dev.
The st_ino code could probably be changed similarly, but 64-bit inode
numbers are not a new thing, so it may be riskier.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This header was originally only needed for builds on darwin and
FreeBSD, but was being included whenever it was detected.
This has caused problems when what was an internal header was
removed (from glibc) and in general wasn't needed anyway.
On FreeBSD only localeconv_l() requires xlocale.h, so we test
specifically for that.
|
|
|
|
|
|
|
|
|
|
|
|
| |
User should expect to see configuration questions spelled 'UTF-8', not
'UTF8' (even if we store information internally or in config.sh without
the hyphen).
Correct user prompts accordingly.
For: #18844
https://github.com/Perl/perl5/pull/18870 by @jkeenan
|
|
|
|
| |
Several new probes have been added.
|
|
|
|
|
|
|
|
|
|
|
| |
This probe has been available without my realizing it had been merged.
Some compilers, chiefly IBM, use only integer-size bitfields, warning
when presented with other-sized ones. Allowing other-sized fields is an
extension to the C standard.
These warnings don't affect the correctness of the code generated, but
very many are generated per run, potentially overwhelming the reader
into not noticing warnings that are important.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This test in Configure tries to probe for undefined behaviour in
getenv(), but provokes undefined behaviour in C/C++ by falling off
the end of a function with a non-void return type.
Without optimization clang++ generated a ud2 instruction here on
amd64 producing an illegal instruction exception. With optimization
the test case fell off the end and started re-executing main(),
eventually producing a SIGBUS.
Simply dropping the value of getenv() here and returning NULL wasn't
useful, under -O2 the compiler optimized away the getenv() call,
voiding the whole point of the test.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
• Use realpath if available
• This might catch more duplicate paths
• Only include real existing paths
• Filter inc paths out of libpth
Before:
incpth: /usr/lib64/gcc/x86_64-suse-linux/7/include /usr/local/include /usr/lib64/gcc/x86_64-suse-linux/7/include-fixed /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/include /usr/include
libpth: /usr/local/lib /usr/lib64/gcc/x86_64-suse-linux/7/include-fixed /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/lib /usr/lib /pro/local/lib /lib/../lib64 /usr/lib/../lib64 /lib /lib64 /usr/lib64 /usr/local/lib64
After:
incpth: /usr/lib64/gcc/x86_64-suse-linux/7/include /usr/local/include /usr/lib64/gcc/x86_64-suse-linux/7/include-fixed /usr/x86_64-suse-linux/include /usr/include
libpth: /usr/local/lib /usr/x86_64-suse-linux/lib /usr/lib /pro/local/lib /lib64 /usr/lib64 /lib /usr/local/lib64
If merged, I'll backport
|
| |
|
|
|
|
|
|
| |
Per suggestion by Andy Dougherty.
For: https://github.com/Perl/perl5/issues/18573
|
| |
|
| |
|
|
|
|
|
|
| |
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.
|