Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

h2ph is unable to parse do { ... } while (0) constructs in macros #7843

Closed
p5pRT opened this issue Mar 19, 2005 · 5 comments
Closed

h2ph is unable to parse do { ... } while (0) constructs in macros #7843

p5pRT opened this issue Mar 19, 2005 · 5 comments

Comments

@p5pRT
Copy link

p5pRT commented Mar 19, 2005

Migrated from rt.perl.org#34496 (status was 'resolved')

Searchable as RT34496$

@p5pRT
Copy link
Author

p5pRT commented Mar 19, 2005

From at@altlinux.ru

Created by at@solemn.turbinal.org

Again, I know h2ph is a rough tool that doesn't handle all C constructs.
This is the last bug report for today. :)

$ cat while0.h
#define NOOP \
  do { \
  int x = 1 + 1; \
  } while (0)
$ h2ph -d . while0.h
while0.h -> while0.ph
$ perl -c while0.ph
syntax error at while0.ph line 6, near "&do { "
syntax error at while0.ph line 7, near "}"
while0.ph had compilation errors.
$ cat while0.ph
require '_h2ph_pre.ph';

no warnings 'redefine';

unless(defined(&NOOP)) {
  sub NOOP () { &do { 'int' &x = 1+ 1; } &while (0);}
}
1;
$

Perl Info

Flags:
    category=utilities
    severity=low

Site configuration information for perl v5.8.6:

Configured by ALT Linux Team at Fri Mar 11 15:59:16 MSK 2005.

Summary of my perl5 (revision 5 version 8 subversion 6) configuration:
  Platform:
    osname=linux, osvers=2.4.20-alt7-up, archname=i386-linux-thread-multi
    uname='linux solemn.turbinal.org 2.4.20-alt7-up #1 fri mar 14 14:57:05 msk 2003 i686 unknown unknown gnulinux '
    config_args='-de -rs -Darchname=i386-linux -Dd_dosuid -Ud_csh -Dlibswanted=dl m c crypt db ndbm gdbm -Duseshrplib -Dlibperl=libperl.so.5.8 -Dcc=gcc -Doptimize=-pipe -Wall -Os -march=i686 -D_GNU_SOURCE -momit-leaf-frame-pointer -Dcccdlflags=-fPIC -DPIC -Dccdlflags=-rdynamic -Wl,-O1 -Dlddlflags=-shared -Wl,-O1 -Dldflags=-Wl,-O1 -Dprefix=/usr -Dprivlib=/usr/lib/perl5 -Darchlib=/usr/lib/perl5/i386-linux -Dvendorprefix=/usr -Dvendorlib=/usr/lib/perl5/vendor_perl -Dvendorarch=/usr/lib/perl5/vendor_perl/i386-linux -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dvendorman1dir=/usr/share/man/man1 -Dvendorman3dir=/usr/share/man/man3 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/lib/perl5/site_perl/5.8.6 -Dsitearch=/usr/local/lib/perl5/site_perl/5.8.6/i386-linux -Dsiteman1dir=/usr/local/man/man1 -Dsite_man3dir=/usr/local/man/man3 -Dcf_by=ALT Linux Team -Dcf_email=qa@altlinux.org -Dmyhostname=localhost -Dperladmin=root@localhost -Dmyuname=Linux 2.4.20-alt7-up i686 -Dnewmyuname=Linux 2.4.20-alt7-up i686 -Dinc_version_list=5.8.5/i386-linux 5.8.4/i386-linux 5.8.3/i386-linux 5.8.2/i386-linux 5.8.1/i386-linux 5.8.0/i386-linux 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0 5.6.1 5.6.0 -Dpager=/usr/bin/less -isR -Di_shadow -Di_syslog -Dusethreads -Duseithreads -Duselargefiles -Di_db -Di_gdbm -Di_ndbm -Di_sdbm -Ui_odbm'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=undef use64bitall=undef uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm',
    optimize='-pipe -Wall -Os -march=i686 -D_GNU_SOURCE -momit-leaf-frame-pointer',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -I/usr/local/include -I/usr/include/gdbm'
    ccversion='', gccversion='3.3.3 20040412 (ALT Linux, build 3.3.3-alt5)', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='gcc', ldflags ='-Wl,-O1 -L/usr/local/lib64 -L/usr/local/lib'
    libpth=/usr/local/lib64 /usr/local/lib /lib64 /usr/lib64 /lib /usr/lib
    libs=-ldl -lm -lpthread -lc -lcrypt -ldb -lgdbm
    perllibs=-ldl -lm -lpthread -lc -lcrypt
    libc=/lib/libc-2.3.3.so, so=so, useshrplib=true, libperl=libperl.so.5.8
    gnulibc_version='2.3.3'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic -Wl,-O1'
    cccdlflags='-fPIC -DPIC', lddlflags='-shared -Wl,-O1 -L/usr/local/lib64 -L/usr/local/lib'

Locally applied patches:
    


@INC for perl v5.8.6:
    /etc/perl5
    /usr/lib/perl5/i386-linux
    /usr/lib/perl5
    /usr/local/lib/perl5/site_perl/5.8.6/i386-linux
    /usr/local/lib/perl5/site_perl/5.8.6
    /usr/local/lib/perl5/site_perl/5.8.4/i386-linux
    /usr/local/lib/perl5/site_perl/5.8.2/i386-linux
    /usr/local/lib/perl5/site_perl/5.8.1/i386-linux
    /usr/local/lib/perl5/site_perl/5.8.4
    /usr/local/lib/perl5/site_perl/5.8.2
    /usr/local/lib/perl5/site_perl/5.8.1
    /usr/local/lib/perl5/site_perl/5.6.1
    /usr/local/lib/perl5/site_perl
    /usr/lib/perl5/vendor_perl/i386-linux
    /usr/lib/perl5/vendor_perl
    /usr/lib/perl5/vendor_perl
    .


Environment for perl v5.8.6:
    HOME=/home/at
    LANG=C
    LANGUAGE (unset)
    LC_COLLATE=ru_RU.CP1251
    LC_CTYPE=ru_RU.CP1251
    LC_MESSAGES=C
    LC_MONETARY=ru_RU.CP1251
    LC_NUMERIC=ru_RU.CP1251
    LC_TIME=C
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=/home/at/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/games:/sbin:/usr/sbin:/usr/local/sbin:/usr/lib/qt3/bin
    PERL_BADLANG (unset)
    SHELL=/bin/zsh

@p5pRT
Copy link
Author

p5pRT commented Dec 29, 2011

From @jkeenan

On Sat Mar 19 09​:59​:22 2005, at@​altlinux.ru wrote​:

This is a bug report for perl from at@​solemn.turbinal.org,
generated with the help of perlbug 1.35 running under perl v5.8.6.

Again, I know h2ph is a rough tool that doesn't handle all C
constructs.
This is the last bug report for today. :)

$ cat while0.h
#define NOOP \
do { \
int x = 1 + 1; \
} while (0)
$ h2ph -d . while0.h
while0.h -> while0.ph
$ perl -c while0.ph
syntax error at while0.ph line 6, near "&do { "
syntax error at while0.ph line 7, near "}"
while0.ph had compilation errors.
$ cat while0.ph
require '_h2ph_pre.ph';

no warnings 'redefine';

unless(defined(&NOOP)) {
sub NOOP () { &do { 'int' &x = 1+ 1; } &while (0);}
}
1;
$

Trying this today with Perl 5.14.2 on Darwin/PPC, I get better results​:

#####
$ h2ph -d . while0.h
while0.h -> while0.ph

$ cat while0.ph
require '_h2ph_pre.ph';

no warnings qw(redefine misc);

unless(defined(&NOOP)) {
  sub NOOP () { 1;}
}
1;

$ perl -c while0.ph
while0.ph syntax OK
#####

If so, can we close this ticket?

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

p5pRT commented Dec 29, 2011

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Jul 7, 2016

From @dcollinsn

Per Jim Keenan's results and my own, this seems to be resolved.

@p5pRT p5pRT closed this as completed Jul 7, 2016
@p5pRT
Copy link
Author

p5pRT commented Jul 7, 2016

@dcollinsn - Status changed from 'open' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant