This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: makecontext and its arguments


Ulrich Drepper <drepper@redhat.com> writes:

|> Andreas Schwab wrote:
|> 
|> > This is the crux of the problem.  makecontext talks about "integer
|> > arguments", and __int128 is an integer type.  So it is obliged to handle
|> > this.
|> 
|> This is a completely bogus argument.  Every platform could define
|> int1024_t or whatever.

Yes, that's all I said.

|> These don't count.

Why?  An extended integer type is also an integer type (6.2.5[#4]).

|> At the time the interface was introduced only char, short, int, and
|> long were available.

Irrelevant.  The specification is part of the current POSIX standard, and
the current POSIX standard does define extended integer types (by
reference to the C standard).

|> Nothing else can be expected to work.  The method described earlier
|> works perfectly for this and the proposed attribute has the potential
|> to help many more applications which would suffer from this broken
|> calling convention.

There is no broken calling convention.  You just cannot use va_arg(,long)
to retrieve an argument of type int (7.15.1.1[#2]).

|> > This is not what the specification says.
|> 
|> It says so implicitly.

Chapter and verse, please.

|> Whatever is not explicitly specified is implicitly left undefined.  And
|> undefined means garbage is allowed.  And this is what happens on most
|> platforms.

I agree that the specification of makecontext is defective, but the
closest approximation is to do s/integer/int/, and that makes our
implementation nonconforming.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]