Commit Graph

3910 Commits

Author SHA1 Message Date
Cyrill Gorcunov
149231f665 test: nasm-t -- Add zerobyte test
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-11-11 21:43:45 +03:00
Cyrill Gorcunov
0060e40246 test: nasm-t -- Add andbyte test
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-11-11 21:43:45 +03:00
Cyrill Gorcunov
2a34d0287e test: nasm-t -- Add align13s test
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-11-11 21:43:45 +03:00
Cyrill Gorcunov
750bc50aa8 test: nasm-t -- Write text data in utf8 form
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-11-11 21:43:45 +03:00
Cyrill Gorcunov
b4e3f11931 output: obj -- Fix nil dereference if no deps needed
Occasionally sneaked in by f7106d06e4

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-11-11 21:42:40 +03:00
Cyrill Gorcunov
bfa1ed0ae9 test: nasm-t -- Add UTF testcase
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-28 23:51:45 +03:00
Cyrill Gorcunov
fa13a138ea stabs: Convert style and add comments
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-28 23:51:38 +03:00
Cyrill Gorcunov
f856a97707 elf: Convert header to linux style
No functional changes.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-28 23:51:31 +03:00
Cyrill Gorcunov
7a6e2550fc misc: Nindent -- Drop expand tabs with space option
Currently out code is rather a mix of space/tabs
with sometime different indent level. Mostly because
some of developers are came from kernel space. Lets
shift to kernel coding standart with small steps,
file by file. It really helps when you're sitting
in front of laptop more than 10 hours long.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-28 23:51:25 +03:00
Cyrill Gorcunov
29a8299487 dwarf: Update header and drop redundant space
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-28 23:51:18 +03:00
Cyrill Gorcunov
218971e5ac dwarf: Update definitions for v4 and v5
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-28 23:51:10 +03:00
Cyrill Gorcunov
41f9ce464a .gitignore: Add patches directory
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-28 23:51:03 +03:00
H. Peter Anvin (Intel)
f7106d06e4 strlist: use a hash table
Use a hash table to enforce uniqueness in a string list. It is still
an ordered list, however, and can be walked in insertion order.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2018-10-25 12:33:58 -07:00
Cyrill Gorcunov
c7922f95af output: macho -- Rename sect_attribs to macho_known_section_attr
To unify with macho_known_section in namings.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-25 00:14:08 +03:00
Cyrill Gorcunov
458c04eca4 output: macho -- Use lookup_known_section helper
To make it similar to elf code.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-25 00:13:54 +03:00
Cyrill Gorcunov
fbc92bdb66 output: macho -- Beautify known sections
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-24 22:49:03 +03:00
Cyrill Gorcunov
68de05ca79 output: macho -- Move constants into the header
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-24 22:31:07 +03:00
Cyrill Gorcunov
3631bc29c1 Merge branch 'nasm-2.14.xx'
* nasm-2.14.xx:
  doc: Update changes
2018-10-21 15:45:36 +03:00
Cyrill Gorcunov
0e7f511151 doc: Update changes
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-21 15:45:02 +03:00
Cyrill Gorcunov
eb82f99367 Merge branch 'nasm-2.14.xx'
* nasm-2.14.xx:
  preproc: Make the preprocessor use nasm_catfile for include
  path: nasm_catfile -- Fix incorrect return of filename only
2018-10-21 15:06:36 +03:00
night199uk
fdb1a1b151 preproc: Make the preprocessor use nasm_catfile for include
All include paths to nasm must already have a trailing separator
prefix which is uncommon among tools. Change to using nasm_catfile
which gives a more normal behaviour.

https://bugzilla.nasm.us/show_bug.cgi?id=3392205

Signed-off-by: night199uk <night199uk@hermitcrabslab.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-19 01:00:11 +03:00
night199uk
e1bd3bc7b4 path: nasm_catfile -- Fix incorrect return of filename only
nasm_catfile returns an incorrect (already incremented) pointer.

https://bugzilla.nasm.us/show_bug.cgi?id=3392205

Signed-off-by: night199uk <night199uk@hermitcrabslab.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-19 00:55:54 +03:00
Cyrill Gorcunov
1f620b8e84 test: nasm-t -- Add alonesym-obj testcase
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-17 23:40:50 +03:00
Cyrill Gorcunov
dcf3937e92 test: nasm-t -- Use new syntax for update
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-17 23:36:43 +03:00
Cyrill Gorcunov
6977b23cfb travis: Disable osx for a while
osx update takes too long, disable it for a while.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-17 21:40:14 +03:00
Cyrill Gorcunov
ab50bc3780 Add travis status into readme
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-17 21:40:14 +03:00
Cyrill Gorcunov
2e1bf723a9 test: travis -- Add some of converted tests
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-17 21:40:14 +03:00
Cyrill Gorcunov
5453388940 test: travis -- Add initial support
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-17 21:40:14 +03:00
Cyrill Gorcunov
88ef566099 README: Update link to license
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-17 21:38:35 +03:00
Cyrill Gorcunov
b5e00ec018 Convert README to md format
And update it a bit.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-17 21:38:28 +03:00
Cyrill Gorcunov
f7b44f6092 Merge branch 'nasm-2.14.xx'
* nasm-2.14.xx: (83 commits)
  NASM 2.14rc16
  doc: Update changes
  preproc: expand_smacro -- Fix nil dereference on error path
  eval: Eliminate division by zero
  doc: Update changes
  opflags: Convert is_class and is_reg_class to helpers
  preproc: Fix out of range access in expand mmacro
  doc: Update changes
  parser: Fix sigsegv on certain equ instruction parsing
  labels: Make sure nil label is never passed
  labels: Don't nil dereference if no label provided
  macho: Add warning message in macho_output()
  macho/reloc: Fix addr size sensitive conditions
  macho/reloc: Fix macho_output() to get the offset adjustments by add_reloc()
  macho/reloc: Fixed offset adjustment in add_reloc()
  macho/reloc: Allow absolute relocation when forcing a symbol reference
  macho/reloc: Adjust SUB relocation information
  macho/reloc: Fixed in handling GOT/GOTLOAD/TLV relocations
  macho/reloc: Simplified relocation for REL/BRANCH
  macho/sym: Record initial symbol number always
  ...

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-15 22:58:13 +03:00
Cyrill Gorcunov
28b69e2a63 NASM 2.14rc16 2018-10-15 00:26:52 +03:00
Cyrill Gorcunov
1cbd48ad48 doc: Update changes
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-14 21:09:30 +03:00
Cyrill Gorcunov
980dd658b5 preproc: expand_smacro -- Fix nil dereference on error path
When error happened earlier we might have a.mac already
handled and set to nil.

https://bugzilla.nasm.us/show_bug.cgi?id=3392508

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-14 19:25:32 +03:00
Cyrill Gorcunov
ceec0d8187 eval: Eliminate division by zero
When doing division we should detect if the value we're
divided by is not zero. Instead of is_unknown() helper
we should use is_just_unknown().

https://bugzilla.nasm.us/show_bug.cgi?id=3392515
https://bugzilla.nasm.us/show_bug.cgi?id=3392473

Reported-by: Jun <jxx13@psu.edu>
Reported-by: stuartly <situlingyun@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-14 01:49:43 +03:00
Cyrill Gorcunov
d94402d6f7 doc: Update changes
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-13 23:03:24 +03:00
Cyrill Gorcunov
3c755dac88 opflags: Convert is_class and is_reg_class to helpers
So we can test for out of bound access and make
helpers safe to use.

https://bugzilla.nasm.us/show_bug.cgi?id=3392447

Reported-by: Jun <jxx13@psu.edu>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-13 22:57:30 +03:00
Cyrill Gorcunov
67f2ca2b3f preproc: Fix out of range access in expand mmacro
On specially crafetd malformed input file the params
might be zapped (say due to invalid syntax) so we might
access out of bound having nil dereference in best case.

Note the later code in this helper uses tok_isnt_ helper
which already has similar check.

https://bugzilla.nasm.us/show_bug.cgi?id=3392518

Reported-by: Jordan Zebor <j.zebor@f5.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-13 19:41:01 +03:00
Cyrill Gorcunov
a98a84b0d5 doc: Update changes
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-13 18:15:36 +03:00
Cyrill Gorcunov
a28c40d546 parser: Fix sigsegv on certain equ instruction parsing
We should check for bounds when accessing nasm_reg_flags.
Seems this bug was for long time already.

https://bugzilla.nasm.us/show_bug.cgi?id=3392516

Reported-by: Jordan Zebor <j.zebor@f5.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-13 18:10:30 +03:00
Cyrill Gorcunov
8e740c6773 labels: Make sure nil label is never passed
We already catched a case where we've missed
test for non nil label and in result got sigsegv,
lets rather panic next time.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-13 17:18:05 +03:00
Cyrill Gorcunov
e996d28c70 labels: Don't nil dereference if no label provided
An equ without label may cause nil dereference

 |	equ 0x100

Fixes 98578071b9

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-10-13 16:18:16 +03:00
Chang S. Bae
703e565849 macho: Add warning message in macho_output()
Based-on-code-from: zenith432 <zenith432@users.sourceforge.net>
Signed-off-by: Chang S. Bae <changseok.bae@gmail.com>
2018-10-09 10:23:13 +03:00
Chang S. Bae
7fcf32ba31 macho/reloc: Fix addr size sensitive conditions
TLVP relocation helps GOT that is 64-bit only.

Based-on-code-from: zenith432 <zenith432@users.sourceforge.net>
Signed-off-by: Chang S. Bae <changseok.bae@gmail.com>
2018-10-09 10:23:10 +03:00
Chang S. Bae
195e735a81 macho/reloc: Fix macho_output() to get the offset adjustments by add_reloc()
Unlike the relative relocations, OUT_ADDRESS had ignored the adjustments
made by add_reloc(), and writes the offset of the target symbol in the
target section.

Based-on-code-from: zenith432 <zenith432@users.sourceforge.net>
Signed-off-by: Chang S. Bae <changseok.bae@gmail.com>
2018-10-09 10:23:05 +03:00
Chang S. Bae
f63d211bcf macho/reloc: Fixed offset adjustment in add_reloc()
If the target symbol is in the same file, add_reloc() emits an
internal reloc for the target section, and the offset written
is the offset in the target section.  If the target symbol is
external, its offset is zero (or an explicit addend), and
add_reloc() emits an external reloc for the symbol.

Based-on-code-from: zenith432 <zenith432@users.sourceforge.net>
Signed-off-by: Chang S. Bae <changseok.bae@gmail.com>
2018-10-09 10:23:01 +03:00
Chang S. Bae
960efc3ff2 macho/reloc: Allow absolute relocation when forcing a symbol reference
The (fake) section for absolute symbols is not in the linked list. So,
when the section is not found from the index, now it simply points to
the special section.

Based-on-code-from: zenith432 <zenith432@users.sourceforge.net>
Signed-off-by: Chang S. Bae <changseok.bae@gmail.com>
2018-10-09 10:22:57 +03:00
Chang S. Bae
625ea1ca47 macho/reloc: Adjust SUB relocation information
As SUB relocation getting deprecated, reset external reference seems to
be enough. Also, print a warning message for this.

Based-on-code-from: zenith432 <zenith432@users.sourceforge.net>
Signed-off-by: Chang S. Bae <changseok.bae@gmail.com>
2018-10-09 10:22:53 +03:00
Chang S. Bae
e859ece378 macho/reloc: Fixed in handling GOT/GOTLOAD/TLV relocations
- Changed to search all symbols, instead of only global symbols.

- Will do immediate exits when unsupported use of WRT

- Fixed to mark (got)pcrel flag only for macho64 output. GOT is
supported only for 64-bit.

Based-on-code-from: zenith432 <zenith432@users.sourceforge.net>
Signed-off-by: Chang S. Bae <changseok.bae@gmail.com>
2018-10-09 10:22:49 +03:00
Chang S. Bae
4cbbb3940d macho/reloc: Simplified relocation for REL/BRANCH
It seems like the relocation for the relative reference
to absolute addresses only cares external reference info.
Instead of exiting, reset the external reference flag.

Based-on-code-from: zenith432 <zenith432@users.sourceforge.net>
Signed-off-by: Chang S. Bae <changseok.bae@gmail.com>
2018-10-09 10:22:45 +03:00