@@ -384,5 +384,101 @@ TEST_F(LinkerScriptLexerTest, checkCONSTRUCTORS) {
384
384
lexAndCheckTokens (ExpectedTokens);
385
385
}
386
386
387
+ TEST_F (LinkerScriptLexerTest, checkDataCommands) {
388
+ // this test case comes from lld/test/ELF/linkerscript/data-commands2.test
389
+ llvm::StringRef testRef = " MEMORY {\
390
+ rom (rwx) : ORIGIN = 0x00, LENGTH = 2K\
391
+ } \
392
+ SECTIONS {\
393
+ .foo : {\
394
+ *(.foo.1) \
395
+ BYTE(0x11)\
396
+ *(.foo.2)\
397
+ SHORT(0x1122)\
398
+ *(.foo.3)\
399
+ LONG(0x11223344)\
400
+ *(.foo.4)\
401
+ QUAD(0x1122334455667788)\
402
+ } > rom \
403
+ .bar : { \
404
+ *(.bar.1) \
405
+ BYTE(a + 1) \
406
+ *(.bar.2) \
407
+ SHORT(b) \
408
+ *(.bar.3) \
409
+ LONG(c + 2) \
410
+ *(.bar.4) \
411
+ QUAD(d) \
412
+ } > rom}" ;
413
+
414
+ setupCallToLinkScriptLexer (testRef);
415
+ llvm::SmallVector<ScriptToken> ExpectedTokens (
416
+ {ScriptToken::LS_MEMORY, ScriptToken::CurlyBegin,
417
+ ScriptToken::Identifier, ScriptToken::BracektBegin,
418
+ ScriptToken::Identifier, ScriptToken::BracektEnd,
419
+ ScriptToken::Colon, ScriptToken::LS_ORIGIN,
420
+ ScriptToken::Assign, ScriptToken::Hexdecimal,
421
+ ScriptToken::Comma, ScriptToken::LS_LENGTH,
422
+ ScriptToken::Assign, ScriptToken::Decimal_K,
423
+ ScriptToken::CurlyEnd,
424
+
425
+ ScriptToken::LS_SECTIONS, ScriptToken::CurlyBegin,
426
+ ScriptToken::Identifier, ScriptToken::Colon,
427
+ ScriptToken::CurlyBegin,
428
+
429
+ ScriptToken::Asterisk, ScriptToken::BracektBegin,
430
+ ScriptToken::Identifier, ScriptToken::BracektEnd,
431
+ ScriptToken::LS_BYTE, ScriptToken::BracektBegin,
432
+ ScriptToken::Hexdecimal, ScriptToken::BracektEnd,
433
+
434
+ ScriptToken::Asterisk, ScriptToken::BracektBegin,
435
+ ScriptToken::Identifier, ScriptToken::BracektEnd,
436
+ ScriptToken::LS_SHORT, ScriptToken::BracektBegin,
437
+ ScriptToken::Hexdecimal, ScriptToken::BracektEnd,
438
+
439
+ ScriptToken::Asterisk, ScriptToken::BracektBegin,
440
+ ScriptToken::Identifier, ScriptToken::BracektEnd,
441
+ ScriptToken::LS_LONG, ScriptToken::BracektBegin,
442
+ ScriptToken::Hexdecimal, ScriptToken::BracektEnd,
443
+
444
+ ScriptToken::Asterisk, ScriptToken::BracektBegin,
445
+ ScriptToken::Identifier, ScriptToken::BracektEnd,
446
+ ScriptToken::LS_QUAD, ScriptToken::BracektBegin,
447
+ ScriptToken::Hexdecimal, ScriptToken::BracektEnd,
448
+
449
+ ScriptToken::CurlyEnd, ScriptToken::Greater,
450
+ ScriptToken::Identifier,
451
+
452
+ ScriptToken::Identifier, ScriptToken::Colon,
453
+ ScriptToken::CurlyBegin,
454
+
455
+ ScriptToken::Asterisk, ScriptToken::BracektBegin,
456
+ ScriptToken::Identifier, ScriptToken::BracektEnd,
457
+ ScriptToken::LS_BYTE, ScriptToken::BracektBegin,
458
+ ScriptToken::Identifier, ScriptToken::Plus,
459
+ ScriptToken::Decimal, ScriptToken::BracektEnd,
460
+
461
+ ScriptToken::Asterisk, ScriptToken::BracektBegin,
462
+ ScriptToken::Identifier, ScriptToken::BracektEnd,
463
+ ScriptToken::LS_SHORT, ScriptToken::BracektBegin,
464
+ ScriptToken::Identifier, ScriptToken::BracektEnd,
465
+
466
+ ScriptToken::Asterisk, ScriptToken::BracektBegin,
467
+ ScriptToken::Identifier, ScriptToken::BracektEnd,
468
+ ScriptToken::LS_LONG, ScriptToken::BracektBegin,
469
+ ScriptToken::Identifier, ScriptToken::Plus,
470
+ ScriptToken::Decimal, ScriptToken::BracektEnd,
471
+
472
+ ScriptToken::Asterisk, ScriptToken::BracektBegin,
473
+ ScriptToken::Identifier, ScriptToken::BracektEnd,
474
+ ScriptToken::LS_QUAD, ScriptToken::BracektBegin,
475
+ ScriptToken::Identifier, ScriptToken::BracektEnd,
476
+
477
+ ScriptToken::CurlyEnd, ScriptToken::Greater,
478
+ ScriptToken::Identifier, ScriptToken::CurlyEnd});
479
+
480
+ lexAndCheckTokens (ExpectedTokens);
481
+ }
482
+
387
483
} // namespace elf
388
484
} // namespace lld
0 commit comments