• Yonghong Song's avatar
    fix map a type parsing issue for export/extern types · 96354c67
    Yonghong Song authored
    Fix issue #1562.
    
    Currently, bcc allows a map defined in one module and
    used in the same or a different module. At tests/python directory,
    test_clang.py and test_shared_table.py have such an example.
      ...
      b1 = BPF(text="""BPF_TABLE_PUBLIC("hash", int, int, table1, 10);""")
      b2 = BPF(text="""BPF_TABLE("extern", int, int, table1, 10);""")
      t = b2["table"]
      ...
    
    With current implementation, the map key/value types are parsed
    twice, resulting a type "int int" instead of "int". When type
    is retrieved through `t = b2["table"]`, python decoding error
    will appear.
    
    The issue is fixed by preventing the second map key/value type
    parsing if the map is `extern`. Also add `t = b2["table"]`
    so the issue will be triggered if bcc clang frontend fix is not there.
    Signed-off-by: default avatarYonghong Song <yhs@fb.com>
    96354c67
test_clang.py 18.2 KB