Commit Graph

1658 Commits

Author SHA1 Message Date
H. Peter Anvin
55a9c08dac doc: update the section on numeric constants
Update the section on numeric constants, and add a few more examples.
2009-01-18 22:51:46 -08:00
Charles Crayne
cc88d658ce Generate warning for unknown section atributes
Previously, the ELF backends silently ignored incorrect or unknown
attributes on section declarations, and therefore used default values
in cases where the user had make an error in attempting to specify
custom values.
2009-01-18 15:27:03 -08:00
H. Peter Anvin
f1e46600d2 Fix the [warning] directive
Fix multiple bugs in the [warning] directive:

- Only parsed on pass 1
- "-" was interpreted as "+"
2009-01-05 09:08:06 -08:00
H. Peter Anvin
f5fb723495 outas86: slight stylistic cleanups
Minor stylistic cleanups to previous patch.
2009-01-03 17:56:41 -08:00
Soronel Haetir
e07949dc3f Add entry point support to as86 backend
I needed entry point support with the as86 format, and after looking through
the archives found a similar desire from someone in 2002.  For some reason
such a patch never made it into the code, even though the required flag
value is present, so I offer the a patch of my own.

I compared against what is done in the .obj format and the approaches are
quite similar which I hope will aid in its acceptability.  While I have
tested it extensively it does do the job asked, and I'm honestly not sure
what extensive testing of the change would look like.
2009-01-03 17:54:48 -08:00
H. Peter Anvin
6cda414a0e BR 2432826: Fix enforcement of the LONG bit
Somewhere we lost the enforcement of the LONG bit, as opposed to
NOLONG.  Fix this in the most obvious way.
2008-12-29 20:52:28 -08:00
H. Peter Anvin
9ed8594a28 BR 2413278: Nonoptimal forms of arithmetic instructions involving AX
At some point, we lost the optimizations for the core arithmetic
operations involving AX.  Put them back.
2008-12-29 19:58:36 -08:00
H. Peter Anvin
fd925d9512 changes.src: document Mach-O alignment fix. 2008-12-22 16:37:59 -08:00
H. Peter Anvin
d23191e106 NASM 2.06rc2 2008-12-19 16:48:07 -08:00
David DeHaven
74a8755fe3 Mach-O alignment fix
Several projects have taken to using .text to store read-only data
when building on Mac OS X due to crashes in SSE code from the .rodata
section being mis-aligned. It seems there was a misunderstanding about
how ld/ld64 handles section alignment in outmacho.c so I wrote a patch
to fix it. I tested it against x264 git, modified it to use ".rodata
align=16" for the data section and use movdqa instructions (guaranteed
to crash when built with unpatched nasm) and it passed all tests in
its checkasm tool.

If you want more data I can provide, but it's late and I've had a
couple glasses of mulled wine :)

-DrD-
2008-12-18 14:58:24 -08:00
Victor van den Elzen
352fe06e02 BR 2413272: Warn about byte displacement overflow
Remove the special case for single byte displacements,
which was already in out() anyway.
2008-12-10 13:04:58 +01:00
H. Peter Anvin
2b5ad13bc1 NASM 2.06rc1 2008-11-30 15:53:02 -08:00
H. Peter Anvin
1fee7d2d23 ELF: use rbtree for symbol searches
Linear searches are evil, so use an llrbtree to search for symbols by
offset.  This doesn't change the preexisting behaviour that we only
look for global symbols.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-11-06 19:55:05 -08:00
H. Peter Anvin
ef11aa889b rbtree: drop "const" from search function
Having the search argument and result be "const" is nice in theory,
but causes problems in practice.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-11-06 19:54:05 -08:00
H. Peter Anvin
674788166f changes.src: document POPCNT fix.
Add POPCNT fix to release notes.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-11-06 09:42:11 -08:00
H. Peter Anvin
475421695d Merge branch 'nasm-2.05.xx' 2008-11-06 09:41:23 -08:00
H. Peter Anvin
b46a0037c5 test/popcnt.asm: simple test for the POPCNT instruction
Very simple test of POPCNT instructions.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-11-06 09:40:39 -08:00
H. Peter Anvin
81cef52e7a The POPCNT instruction does not need sizes on memory operands
The POPCNT instruction should not require sizes on memory operands.
Add the appropriate size flags for that to work.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-11-06 09:39:48 -08:00
H. Peter Anvin
0ad8ffd6e2 BR 2229703: POPCNT r64,rm64 not POPCNT r64,rm32
The 64-bit version of the POPCNT instruction takes r64,rm64; not
r64,rm32.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-11-06 09:35:02 -08:00
H. Peter Anvin
0b7d19d35c preproc: BR 2222615: fix segfault on bogus %ifmacro
BR 2222615: Fix segmentation fault on %ifmacro without an argument.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-11-06 09:33:16 -08:00
H. Peter Anvin
da05001506 doc: better description of %line
The implication that %line allows NASM to digest cpp output is just
plain wrong, at least without additional intermediate processing.  Be
a little more circumspect.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-11-05 15:55:40 -08:00
Victor van den Elzen
f568613c2a Fix BR #916647
nasm.c should respect the default debug format of the output format,
instead of replacing it with the first format in the list.
This is cleaner and allows the list to be sorted normally.

This commit rewrites commit 116994111b which was very fragile.
2008-11-05 14:19:15 +01:00
H. Peter Anvin
67a405e2f4 changes.src: document if for %ifmacro.
Document fixed %ifmacro.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-11-04 14:26:32 -08:00
H. Peter Anvin
695a171ec9 test: add test for BR 2222615
Add a test for %ifmacro, per BR 2222615.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-11-04 14:25:12 -08:00
H. Peter Anvin
ec86b6ffe3 preproc: BR 2222615: fix segfault on bogus %ifmacro
BR 2222615: Fix segmentation fault on %ifmacro without an argument.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-11-04 14:24:34 -08:00
Charles Crayne
e2dea103db Prevent erroneous extra "final" pass
Specifically check for end of final pass.
2008-11-03 18:21:24 -08:00
H. Peter Anvin
e263d04544 doc/changes.src: document ELF TLS
Add ELF TLS to the release notes.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-11-02 20:41:29 -08:00
H. Peter Anvin
76fab7ab17 doc: minor edit to the TLS documentation examples.
Minimize the TLS documentation examples (we don't need "dword" in a
mov from ebx, for example.)  This is just to avoid user confusion.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-11-02 20:40:16 -08:00
Charles Crayne
81afb49809 Document differences between TLS coding in ELF32 and ELF64
Absolute relocation wrt ..tlsie for ELF32
Relative relocation wrt ..gottpoff for ELF64
2008-11-01 17:09:36 -07:00
Charles Crayne
5fb6a39bc9 ELF32 support for offset to IE GOT entry
Add new WRT type ..tlsie.
Generate R_386_TLS_IE relocation entries
for references to thread local variables.
2008-11-01 16:48:31 -07:00
H. Peter Anvin
b6e36102e6 version.pl: snapshot releases *only* have digits in the tail
Snapshot releases have *only* digits in the tail.  "git describe"
produces tails that have digits in them, but aren't numeric.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-11-01 12:57:05 -07:00
H. Peter Anvin
4b9358928b Move all version strings to a single compilation unit (ver.c)
Move all the version strings to a single compilation unit, ver.c; this
does not include the version macros, which are fed into macros.c.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-10-31 16:53:49 -07:00
Charles Crayne
dcd3a21145 ELF32 bit support of .tdata and .tbss sections
Set default attributes for .tdata and .tbss sections
Implement new attribute 'tls' for arbitrary section names
Flag variables in sections with tls attribute with STT_TLS
2008-10-30 21:59:42 -07:00
H. Peter Anvin
e8873121aa rbtree: drop the data pointer; instead rely on being embedded
Drop the data pointer, and instead assume the struct rbtree will be
embedded in a bigger data structure (to be extracted via
container_of()).

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-10-30 10:58:28 -07:00
H. Peter Anvin
9656a581cd compiler.h: add offsetof() and container_of()
offsetof() is a C99 construct; provided here as an ersatz for older
systems.

container_of() is a nonstandard but highly useful construct, which
allows data structure control items like tree structures to be
embedded in larger data structures without the penalty of extra
pointers and allocations.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-10-30 10:54:55 -07:00
H. Peter Anvin
3e364fe274 Left-leaning red-black tree data structure
Implement library functions for "left-leaning red-black trees" with
uint64_t keys.  This is meant for looking up symbols by address in the
backends that need to do so, e.g. ELF.

A good question is if there is a better way to do this, that recovers
the original symbol, but that's a future issue.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-10-29 23:31:56 -07:00
H. Peter Anvin
034b009e51 Fix header guards for outlib.h
Fix typo in header guards for outlib.h

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-10-29 23:31:56 -07:00
H. Peter Anvin
5da04b035c make alldeps
Run "make alldeps"

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-10-29 21:03:17 -07:00
H. Peter Anvin
8321866bb5 doc: cross-reference macro parameter concatenation with %[...]
Explicitly document that %[...] and macro parameters concatenate the
same way, and cross-reference the two.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-10-29 21:02:30 -07:00
H. Peter Anvin
ad3d21fdb6 Merge branch 'nasm-2.05.xx' 2008-10-29 20:47:58 -07:00
H. Peter Anvin
79ced5ad36 doc: fix typo in the description of %unmacro
The description of %unmacro used %unmacro in a place which should
obviously have been %macro.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-10-29 20:47:47 -07:00
H. Peter Anvin
c84fa31d04 doc: fix capitalization
Make the capitalization of "The -t Option" consistent with the other
options.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-10-29 20:47:40 -07:00
H. Peter Anvin
3b142db39e doc: remove duplicate entry for the "error" warning class
Remove duplicate entry for the "error" warning class; leave at the end
with "all", as being another meta-warning class.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-10-29 20:47:32 -07:00
H. Peter Anvin
d37e5232b4 doc: retroactively document updates to the warning options
Retroactively document the following changes to the warning options:

  - gcc-like syntax (-Wfoo, -Wno-foo)
  - "all" alias
  - "error" metawarning

Added in 2.00rc1 but never documented.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-10-29 20:47:25 -07:00
H. Peter Anvin
6c9f6f8e3d doc: fix typo in the description of %unmacro
The description of %unmacro used %unmacro in a place which should
obviously have been %macro.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-10-29 20:46:30 -07:00
H. Peter Anvin
2d9ceaa3ee doc: fix capitalization
Make the capitalization of "The -t Option" consistent with the other
options.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-10-29 18:17:59 -07:00
H. Peter Anvin
b7aaf0b9e5 doc: remove duplicate entry for the "error" warning class
Remove duplicate entry for the "error" warning class; leave at the end
with "all", as being another meta-warning class.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-10-29 18:16:31 -07:00
H. Peter Anvin
8a2f145260 doc: retroactively document updates to the warning options
Retroactively document the following changes to the warning options:

  - gcc-like syntax (-Wfoo, -Wno-foo)
  - "all" alias
  - "error" metawarning

Added in 2.00rc1 but never documented.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-10-29 18:14:03 -07:00
H. Peter Anvin
fd366a9db4 Merge commit 'nasm-2.05.01'
Conflicts:
	doc/changes.src
2008-10-29 10:53:37 -07:00
H. Peter Anvin
32f58028da NASM 2.05.01 2008-10-29 10:52:53 -07:00