Age | Commit message (Expand) | Author | Files | Lines |
2024-04-25 | btf_encoder: Fix DWARF int type with greater-than-16 byte issue | Yonghong Song | 1 | -1/+1 |
2024-03-01 | btf_encoder: Dynamically allocate the vars array for percpu variables | Alan Maguire | 1 | -9/+29 |
2023-10-25 | btf_encoder, pahole: Move BTF encoding options into 'struct conf_load' | Alan Maguire | 1 | -4/+4 |
2023-03-13 | btf_encoder: Compare functions via prototypes not parameter names | Alan Maguire | 1 | -36/+31 |
2023-03-02 | dwarf_loader: Fix for BTF id drift caused by adding unspecified types | Eduard Zingerman | 1 | -8/+0 |
2023-02-18 | btf_encoder: Exclude functions with unexpected param register use not optimiz... | Alan Maguire | 1 | -7/+17 |
2023-02-09 | btf_encoder: Ensure ELF function representation is fully initialized | Alan Maguire | 1 | -0/+2 |
2023-02-09 | btf_encoder: Support delaying function addition to check for function prototy... | Alan Maguire | 1 | -9/+86 |
2023-02-09 | btf_encoder: Represent "."-suffixed functions (".isra.0") in BTF | Alan Maguire | 1 | -7/+141 |
2023-02-09 | btf_encoder: Rework btf_encoders__*() API to allow traversal of encoders | Alan Maguire | 1 | -8/+28 |
2023-02-09 | btf_encoder: Refactor function addition into dedicated btf_encoder__add_func | Alan Maguire | 1 | -19/+27 |
2023-02-09 | btf_encoder: Store type_id_off, unspecified type in encoder | Alan Maguire | 1 | -27/+32 |
2022-10-11 | btf_encoder: Encode DW_TAG_unspecified_type returning routines as void | Arnaldo Carvalho de Melo | 1 | -3/+30 |
2022-10-10 | btf_encoder: Store the CU being processed to avoid changing many functions | Arnaldo Carvalho de Melo | 1 | -2/+9 |
2022-10-04 | btf_encoder: Add extra debug info for unsupported DWARF tags | Arnaldo Carvalho de Melo | 1 | -2/+2 |
2022-08-26 | btf: Fix building with system libbpf | Arnaldo Carvalho de Melo | 1 | -2/+25 |
2022-07-12 | btf: Support BTF_KIND_ENUM64 | Yonghong Song | 1 | -17/+50 |
2022-05-17 | btf_encoder: Normalize array index type for parallel dwarf loading case | Yonghong Song | 1 | -1/+2 |
2022-03-26 | btf_encoder: Collect info of per-cpu variables from threads | Kui-Feng Lee | 1 | -0/+21 |
2022-01-28 | libbpf: Update libbpf to the latest git HEAD | Kui-Feng Lee | 1 | -10/+10 |
2022-01-28 | pahole: Use per-thread btf instances to avoid mutex locking | Kui-Feng Lee | 1 | -0/+5 |
2021-11-23 | btf_encoder: Support btf_type_tag attribute | Yonghong Song | 1 | -0/+7 |
2021-11-11 | btf_encoder: generate BTF_KIND_DECL_TAGs for typedef btf_decl_tag attributes | Yonghong Song | 1 | -3/+14 |
2021-10-27 | btf: Rename btf_tag to btf_decl_tag | Yonghong Song | 1 | -8/+8 |
2021-10-26 | btf_encoder: Fix handling of percpu symbols on s390 | Ilya Leoshkevich | 1 | -7/+14 |
2021-09-27 | btf_encoder: Generate BTF_KIND_TAG from llvm annotations | Yonghong Song | 1 | -1/+62 |
2021-08-20 | btf_encoder: Fix signed/unsigned comparision | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-08-20 | btf_encoder: has_arg_names() doesn't need the 'cu' pointer | Arnaldo Carvalho de Melo | 1 | -5/+3 |
2021-08-20 | btf_encoder: btf_encoder__encode_tag() doesn't need the 'core_id' pointer | Arnaldo Carvalho de Melo | 1 | -3/+2 |
2021-08-20 | btf_encoder: btf_encoder__encode_tag() doesn't need the 'cu' pointer | Arnaldo Carvalho de Melo | 1 | -2/+2 |
2021-08-20 | btf_encoder: btf_encoder__add_struct_type() doesn't need the 'cu' pointer | Arnaldo Carvalho de Melo | 1 | -2/+2 |
2021-08-20 | btf_encoder: btf_encoder__add_func_proto() doesn't need the 'cu' pointer | Arnaldo Carvalho de Melo | 1 | -3/+3 |
2021-08-20 | btf_encoder: No need to read the ehdr in btf_encoder__write_elf(), ditch it | Arnaldo Carvalho de Melo | 1 | -7/+0 |
2021-08-20 | btf_encoder: No need to store the ehdr in the instance | Arnaldo Carvalho de Melo | 1 | -3/+4 |
2021-08-20 | elf_symtab: Remove needless GElf_Ehdr pointer argument from the constructor | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-08-20 | dutil: elf_symtab__new() doesn't need the GElf_Ehdr *ep argument | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-08-20 | btf_encoder: Add methods to maintain a list of btf encoders | Arnaldo Carvalho de Melo | 1 | -0/+16 |
2021-08-12 | core: variable__name() doesn't need a 'cu' arg | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-08-12 | btf_encoder: Add missing bpf/btf.h include | Arnaldo Carvalho de Melo | 1 | -0/+1 |
2021-08-12 | pahole: function__name() doesn't need a 'struct cu *' argument | Arnaldo Carvalho de Melo | 1 | -3/+3 |
2021-08-12 | btf_encoder: btf_encoder__add_enum_type() doesn't need a 'cu' argument, ditch it | Arnaldo Carvalho de Melo | 1 | -2/+2 |
2021-08-12 | core: enumerator__name() doesn't need a 'cu' argument, ditch it | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-08-12 | core: Ditch dwarves__active_loader, unused | Arnaldo Carvalho de Melo | 1 | -4/+0 |
2021-08-12 | core: Make enumerator->name a real string | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-08-12 | core: type__name() doesn't need a cu arg | Arnaldo Carvalho de Melo | 1 | -2/+2 |
2021-08-12 | core: Make namespace->name a real string | Arnaldo Carvalho de Melo | 1 | -6/+4 |
2021-08-12 | core: Make class_member->name a real string | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-08-12 | core: Make parameter->name a real string | Arnaldo Carvalho de Melo | 1 | -2/+2 |
2021-08-12 | core: Make base_type->name a real string | Arnaldo Carvalho de Melo | 1 | -2/+4 |
2021-07-28 | core: Make function->name a real string | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-16 | Revert "btf_encoder: Reduce the size of encode_cu() by moving function encodi... | Arnaldo Carvalho de Melo | 1 | -51/+43 |
2021-06-15 | btf_encoder: Reduce the size of encode_cu() by moving function encoding to se... | Arnaldo Carvalho de Melo | 1 | -43/+51 |
2021-06-15 | btf_encoder: Reduce the size of encode_cu() by moving var encoding to separat... | Arnaldo Carvalho de Melo | 1 | -112/+121 |
2021-06-14 | btf_encoder: No need to set the endianness twice when encoding into an ELF file | Arnaldo Carvalho de Melo | 1 | -12/+0 |
2021-06-14 | btf_encoder: Pass detached_filename to the constructor | Arnaldo Carvalho de Melo | 1 | -10/+13 |
2021-06-14 | btf_encoder: Adopt writing to raw file method | Arnaldo Carvalho de Melo | 1 | -3/+3 |
2021-06-14 | btf_encoder: Rename btf__encode_in_elf to btf_encoder__write_elf, shortening ... | Arnaldo Carvalho de Melo | 1 | -2/+4 |
2021-06-14 | btf_encoder: Combine btf__write_elf() with btf__encode_in_elf() | Arnaldo Carvalho de Melo | 1 | -6/+1 |
2021-06-14 | btf_encoder: Move duplicate code to btf_encoder__encode() | Arnaldo Carvalho de Melo | 1 | -18/+9 |
2021-06-14 | btf_encoder: Pass the 'skip_encoding_vars' to the constructor | Arnaldo Carvalho de Melo | 1 | -3/+5 |
2021-06-14 | btf_encoder: No need to export the 'struct btf_definition', make it opaque | Arnaldo Carvalho de Melo | 1 | -5/+41 |
2021-06-09 | libbpf: Allow to use packaged version | Luca Boccassi | 1 | -2/+2 |
2021-06-09 | btf_encoder: Move libbtf.c to btf_encoder.c, the only user of its functions | Arnaldo Carvalho de Melo | 1 | -1/+547 |
2021-06-09 | btf_encoder: Move PERCPU_SECTION define to the only source file using it | Arnaldo Carvalho de Melo | 1 | -0/+2 |
2021-06-09 | btf_encoder: Move library global variable btf_gen_floats to btf_encoder class | Arnaldo Carvalho de Melo | 1 | -1/+2 |
2021-06-09 | btf_encoder: Ditch unused 'btf_encoder__verbose' global variable | Arnaldo Carvalho de Melo | 1 | -2/+0 |
2021-06-09 | btf_encoder: No need to pass encoder->percpu_secinfo to btf_encoder__add_data... | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-09 | btf_encoder: Make btf_encoder__add_var_secinfo() receive a btf_encoder pointer | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-09 | btf_encoder: Adopt btf__encode_var_secinfo() as btf_encoder__add_var_secinfo() | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-09 | btf_encoder: Adopt btf__encode_datasec_type() as btf_encoder__add_datasec() | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-09 | btf_encoder: Adopt btf__encode_var_type() as btf_encoder__add_var() | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-09 | btf_encoder: Adopt btf__encode_enum_val() as btf_encoder__add_enum_val() | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-09 | btf_encoder: Adopt btf__encode_enum() as btf_encoder__add_enum() | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-09 | btf_encoder: Adopt btf__encode_enumeration_type() as btf_encoder__add_enum_ty... | Arnaldo Carvalho de Melo | 1 | -5/+4 |
2021-06-09 | btf_encoder: Adopt btf__encode_func_proto() as btf_encoder__add_func_proto() | Arnaldo Carvalho de Melo | 1 | -2/+2 |
2021-06-09 | btf_encoder: Adopt btf__encode_array() as btf_encoder__add_array() | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-09 | btf_encoder: Adopt btf__encode_struct() as btf_encoder__add_struct() | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-09 | btf_encoder: Adopt btf__encode_member() as btf_encoder__add_field() | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-09 | btf_encoder: Adopt btf__encode_struct_type() as btf_encoder__add_struct_type() | Arnaldo Carvalho de Melo | 1 | -4/+4 |
2021-06-09 | btf_encoder: Adopt btf__encode_ref_type() as btf_encoder__add_ref_type() | Arnaldo Carvalho de Melo | 1 | -7/+7 |
2021-06-09 | btf_encoder: Adopt btf__encode_base_type() as btf_encoder__add_base_type() | Arnaldo Carvalho de Melo | 1 | -2/+2 |
2021-06-09 | btf_encoder: Use 'struct btf' directly, stop using btf_elf | Arnaldo Carvalho de Melo | 1 | -18/+17 |
2021-06-09 | libbtf: Remove unused ELF fields and calls from btf_elf | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-08 | btf_encoder: Phagocytize percpu_secinfo from btf_elf | Arnaldo Carvalho de Melo | 1 | -4/+5 |
2021-06-08 | btf_encoder: Move the global btf_encoder to its users, like pahole | Arnaldo Carvalho de Melo | 1 | -2/+0 |
2021-06-08 | btf_encoder: Adopt the cu__encode_btf() method, as btf_encoder__encode_cu() | Arnaldo Carvalho de Melo | 1 | -2/+2 |
2021-06-08 | btf_encoder: Set btf_encoder__verbose in just one place, its users | Arnaldo Carvalho de Melo | 1 | -3/+1 |
2021-06-08 | btf_encoder: Move btf_elf__verbose var to btf_encoder class | Arnaldo Carvalho de Melo | 1 | -1/+3 |
2021-06-08 | btf_encoder: Adopt btf_elf__force, its only used in btf_encoder methods | Arnaldo Carvalho de Melo | 1 | -6/+6 |
2021-06-08 | pahole: Adopt btf_encoder object instantiation from btf_encoder | Arnaldo Carvalho de Melo | 1 | -15/+1 |
2021-06-08 | btf_encoder: Move the function encode() to be a btf_encoder method | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-08 | btf_encoder: Temporarily expose the 'encoder' variable | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-08 | btf_encoder: Move 'filename' member from btf_elf to btf_encoder | Arnaldo Carvalho de Melo | 1 | -4/+9 |
2021-06-04 | btf_encoder: No need for calling btf_encoder__encode() from cu__encode_btf() | Arnaldo Carvalho de Melo | 1 | -13/+0 |
2021-06-04 | btf_encoder: Move btf_elf based encode_in_elf and write_elf methods to btf_en... | Arnaldo Carvalho de Melo | 1 | -4/+143 |
2021-06-04 | btf_encoder: Move collect_symbols() call to btf_encoder constructor | Arnaldo Carvalho de Melo | 1 | -8/+9 |
2021-06-04 | btf_encoder: Remove needless hash.h include, not used anymore | Arnaldo Carvalho de Melo | 1 | -1/+0 |
2021-06-04 | btf_encoder: Move global elf_functions table to the btf_encoder class | Arnaldo Carvalho de Melo | 1 | -29/+19 |
2021-06-04 | btf_encoder: Move ELF's ehdr from btf_elf to btf_encoder | Arnaldo Carvalho de Melo | 1 | -2/+30 |
2021-06-04 | btf_encoder: Move 'symtab' from btf_elf to btf_encoder | Arnaldo Carvalho de Melo | 1 | -7/+13 |
2021-06-04 | btf_encoder: Move percpu members from btf_elf to btf_encoder | Arnaldo Carvalho de Melo | 1 | -4/+18 |
2021-06-04 | btf_encoder: Add a 'verbose' member for encoder specific logging requests | Arnaldo Carvalho de Melo | 1 | -9/+10 |
2021-06-04 | btf_encoder: Move 'array_index_id' global variable to 'struct btf_encoder' | Arnaldo Carvalho de Melo | 1 | -9/+6 |
2021-06-04 | btf_encoder: Move percpu vars global variables to btf_encoder class | Arnaldo Carvalho de Melo | 1 | -27/+13 |
2021-06-04 | btf_encoder: Adopt collect_function() as a btf_encoder method | Arnaldo Carvalho de Melo | 1 | -3/+3 |
2021-06-04 | btf_encoder: Adopt collect_per_cpu_var() as a btf_encoder method | Arnaldo Carvalho de Melo | 1 | -3/+3 |
2021-06-04 | btf_encoder: Adopt collect_symbol() as a btf_encoder method | Arnaldo Carvalho de Melo | 1 | -2/+3 |
2021-06-04 | btf_encoder: Move 'need_index_type' global variable to 'struct btf_encoder' | Arnaldo Carvalho de Melo | 1 | -5/+3 |
2021-06-04 | btf_encoder: Make tag__encode_btf() its encode_tag() method | Arnaldo Carvalho de Melo | 1 | -3/+5 |
2021-06-04 | btf_encoder: Move 'has_index_type' global variable to 'struct btf_encoder' | Arnaldo Carvalho de Melo | 1 | -7/+7 |
2021-06-04 | btf_encoder: Introduce 'struct btf_encoder' to have all the current globals | Arnaldo Carvalho de Melo | 1 | -30/+57 |
2021-06-04 | btf_encoder: Replace btfe with btf in tag__encode_btf() | Arnaldo Carvalho de Melo | 1 | -13/+13 |
2021-06-04 | btf_encoder: Move encode_enumeration_type() from btf_elf to btf | Arnaldo Carvalho de Melo | 1 | -3/+2 |
2021-06-04 | btf_encoder: Move encode_struct_type() from btf_elf to btf | Arnaldo Carvalho de Melo | 1 | -4/+4 |
2021-06-04 | btf_encoder: Move add_datasec_type() from btf_elf to btf encode_datasec_type() | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-04 | btf_encoder: Move add_var_secinfo() from btf_elf to btf encode_var_secinfo() | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-04 | btf_encoder: Move add_var_type() from btf_elf to btf encode_var_type() | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-04 | btf_encoder: Move add_func_proto() from btf_elf to btf encode_func_proto() | Arnaldo Carvalho de Melo | 1 | -2/+2 |
2021-06-04 | btf_encoder: Move add_enum() from btf_elf to btf encode_enum() | Arnaldo Carvalho de Melo | 1 | -2/+3 |
2021-06-04 | btf_encoder: Move add_struct() from btf_elf to btf encode_struct() | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-04 | btf_encoder: Move add_array() from btf_elf to btf encode_array() | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-04 | btf_encoder: Move add_ref_type() from btf_elf to btf encode_ref_type() | Arnaldo Carvalho de Melo | 1 | -7/+7 |
2021-06-04 | btf_encoder: Move add_member() from btf_elf to btf encode_member() | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-04 | btf_encoder: Move add_base_type() from btf_elf to btf encode_base_type() | Arnaldo Carvalho de Melo | 1 | -2/+2 |
2021-06-04 | btf_encoder: Pass the base BTF object to the BTF encoder | Arnaldo Carvalho de Melo | 1 | -1/+1 |
2021-06-04 | pahole: Allow encoding BTF into a detached file | Arnaldo Carvalho de Melo | 1 | -4/+60 |
2021-05-27 | btf_encoder: fix and complete filtering out zero-sized per-CPU variables | Andrii Nakryiko | 1 | -1/+9 |
2021-05-08 | btf: Remove ftrace filter | Martin KaFai Lau | 1 | -278/+7 |
2021-02-17 | btf_encoder: Match ftrace addresses within ELF functions | Jiri Olsa | 1 | -2/+38 |
2021-02-03 | Revert "libbpf: allow to use packaged version" | Arnaldo Carvalho de Melo | 1 | -2/+2 |
2021-01-26 | bpf_encoder: Translate SHN_XINDEX in symbol's st_shndx values | Jiri Olsa | 1 | -16/+17 |
2021-01-21 | btf_encoder: Add extra checks for symbol names | Jiri Olsa | 1 | -2/+11 |
2021-01-21 | libbpf: allow to use packaged version | Luca Boccassi | 1 | -2/+2 |
2020-12-14 | btf_encoder: fix skipping per-CPU variables at offset 0 | Andrii Nakryiko | 1 | -16/+24 |
2020-12-14 | btf_encoder: fix BTF variable generation for kernel modules | Andrii Nakryiko | 1 | -5/+16 |
2020-12-07 | dwarves: Fix compilation on 32-bit architectures | Vitaly Chikunov | 1 | -4/+4 |
2020-12-07 | btf_encoder: Detect kernel module ftrace addresses | Jiri Olsa | 1 | -3/+97 |
2020-12-07 | btf_encoder: Use address size based on ELF's class | Jiri Olsa | 1 | -7/+17 |
2020-12-07 | btf_encoder: Factor filter_functions function | Jiri Olsa | 1 | -20/+41 |
2020-11-17 | btf_encoder: Use better fallback message | Jiri Olsa | 1 | -1/+1 |
2020-11-16 | btf_encoder: Move btf_elf__verbose/btf_elf__force setup | Jiri Olsa | 1 | -2/+3 |
2020-11-16 | btf_encoder: Fix function generation | Jiri Olsa | 1 | -24/+19 |
2020-11-16 | btf_encoder: Generate also .init functions | Jiri Olsa | 1 | -41/+2 |
2020-11-11 | btf: Add support for split BTF loading and encoding | Andrii Nakryiko | 1 | -1/+2 |
2020-11-11 | btf_encoder: Fix array index type numbering | Andrii Nakryiko | 1 | -6/+6 |
2020-11-09 | btf_encoder: Change functions check due to broken dwarf | Jiri Olsa | 1 | -3/+267 |
2020-11-09 | btf_encoder: Move find_all_percpu_vars in generic collect_symbols | Jiri Olsa | 1 | -57/+67 |
2020-10-27 | btf_encoder: Check var type after checking var addr. | Hao Luo | 1 | -4/+5 |
2020-10-23 | btf_encoder: Ignore zero-sized ELF symbols | Andrii Nakryiko | 1 | -8/+4 |
2020-10-09 | btf_encoder: revamp how per-CPU variables are encoded | Andrii Nakryiko | 1 | -102/+146 |
2020-10-09 | btf_encoder: Fix emitting __ARRAY_SIZE_TYPE__ as index range type | Andrii Nakryiko | 1 | -9/+21 |
2020-10-09 | btf_encoder: Use libbpf APIs to encode BTF type info | Andrii Nakryiko | 1 | -53/+43 |
2020-10-01 | btf_encoder: Handle DW_TAG_variable that has DW_AT_specification | Hao Luo | 1 | -3/+13 |
2020-09-21 | btf_encoder: Allow disabling BTF var encoding. | Hao Luo | 1 | -1/+4 |
2020-08-05 | btf_encoder: Teach pahole to store percpu variables in vmlinux BTF. | Hao Luo | 1 | -1/+186 |
2019-11-05 | btf_encoder: Preserve and encode exported functions as BTF_KIND_FUNC | Andrii Nakryiko | 1 | -0/+16 |
2019-03-29 | dwarf_loader: Use DWARF recommended uniform bit offset scheme | Andrii Nakryiko | 1 | -24/+5 |
2019-03-11 | dwarves: Introduce type_id_t for use with the type IDs | Arnaldo Carvalho de Melo | 1 | -2/+2 |
2019-02-26 | btf_encoder: Don't special case packed enums | Andrii Nakryiko | 1 | -9/+0 |
2019-02-14 | btf_elf: Rename btf_elf__free() to btf_elf__delete() | Arnaldo Carvalho de Melo | 1 | -2/+2 |
2019-02-14 | btf: Rename 'struct btf' to 'struct btf_elf' | Arnaldo Carvalho de Melo | 1 | -51/+36 |
2019-02-11 | pahole: use btf.h directly from libbpf | Andrii Nakryiko | 1 | -1/+1 |
2019-01-18 | Fixup copyright notices for BTF files authored by Facebook engineers | Martin Lau | 1 | -1/+6 |
2019-01-18 | Adopt SPDX-License-Identifier | Domenico Andreoli | 1 | -0/+6 |
2018-12-20 | btf: add func_proto support | Yonghong Song | 1 | -4/+1 |
2018-12-20 | btf: fix struct/union/fwd types with kind_flag | Yonghong Song | 1 | -7/+30 |
2018-12-20 | btf: Allow multiple cu's in dwarf->btf conversion | Andrii Nakryiko | 1 | -35/+71 |
2018-12-03 | btf: Generate correct struct bitfield member types | Yonghong Song | 1 | -0/+9 |
2018-09-17 | btf: Fix bitfield encoding | Yonghong Song | 1 | -2/+27 |
2018-07-25 | btf: Add BTF support | Martin KaFai Lau | 1 | -0/+174 |