tinycc-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Tinycc-devel] [FreeBSD support] __aligned(n) + __pure issues


From: Michael Matz
Subject: Re: [Tinycc-devel] [FreeBSD support] __aligned(n) + __pure issues
Date: Sun, 16 Oct 2016 00:05:02 +0200 (CEST)
User-agent: Alpine 2.20 (LSU 67 2015-01-07)

Hi,

On Sat, 15 Oct 2016, grischka wrote:

Christian Jullien wrote:
Ok,
The point is that it compiles ROOTB but then a single line program using only ISO include and std C library fails because of __aligned in a **system** header. I agree that __aligned is a probably a macro or a gcc FreeBSD specific extension, but no one wants to change it source file (or Makefile) when he the switch from gcc to tcc To be more clear, let me start again from scratch (Don’t miss *Linux* in banner with -v and -vv)

Please!  You were clear.  Anyway, maybe this helps:
  
http://repo.or.cz/tinycc.git/commitdiff/f3c1ea6c2d7dca7883985820e46ec536e2d7e8cc
It is expected that this could break system xyz whatever.

Ugh. TCC doesn't support enough of GNU C to be able to sensibly define __GNUC__. I've privately started to support more of it, but it's nowhere complete. I don't think that's going to work very well.

Christian: you were completely clear in your initial mail. I was trying to make you look into FreeBSDs headers to find out _where_ the __aligned macro is defined, under which conditions. I wanted to know this so that I can suggest an acceptable and least intrusive way for TCC to work around the problem in FreeBSDs standard headers.

Some background research:

- obviously FreeBSD headers expect __GNUC__
 http://pcc.ludd.ltu.se/jira/browse/PCC-18

Meeh.

- patch for sys/cdefs.h suggested by PCC
 http://pcc.ludd.ltu.se/ftp/pub/patches/openbsd-include-sys-081220.diff

- __GNUC__ nowadays seems to mean the C dialect rather than the compiler
 https://gcc.gnu.org/ml/gcc/2008-07/msg00026.html

Not sure whether we really want to define __GNUC__.  This might
cause all kind of problems.  However if we don't then sys/cdefs.h does
   #define __attribute__(xyz)

So, FreeBSDs problem really. Well, we could add work arounds in TCC of course, and possibly defining __GNUC__ is the most sensible work around. But please, then only for the BSDs, not for all the rest. The other possibility is to define __aligned ourself (also only on *BSD), if that's the only missing thing breaking otherwise standard-conforming programs on FreeBSD. The compat define should come from some header IMHO, e.g. stddef.h, not pre-defined by TCC itself.


Ciao,
Michael.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]