From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x62b.google.com (mail-pl1-x62b.google.com [IPv6:2607:f8b0:4864:20::62b]) by sourceware.org (Postfix) with ESMTPS id 26E60385841E for ; Wed, 1 Mar 2023 22:00:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 26E60385841E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-pl1-x62b.google.com with SMTP id z2so15498066plf.12 for ; Wed, 01 Mar 2023 14:00:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1677708032; h=content-disposition:mime-version:message-id:subject:to:from:date :from:to:cc:subject:date:message-id:reply-to; bh=5UqvlWlhOhnkbtBsagx1SCP/KVKC4OZDG83r0E+nJf8=; b=YyF3LsdmGsVYlWvKd+0T6FKw5n18yQh81LgMNXutdWduxH9IczzgUtdlHNNY9fZRe6 nMk2YvhYGbwmdqjoJs5BGHFyEJIyyZ+2Y40wWcy+wNZGOy97m0/NAOXsmxw4EasKtdt9 dTjH9y3zNvPa0WAjaRQlzyKCnVnMG52oS/O8jkY4rVqmCPnzDgFKg/9b6ehhR9BwV4YZ evjAlHXQH9Jg1yDc5UIReFRJDF/BwpQPE89x/HJQ+QifLjccHM5mkTFYYE/R6Jbylvls rIzO2XZDpXtNamf6ERc9qCyi1lP3WybLs2ssfYasQ6VmEW9CMrl4sttuwVgCa7Btf4/V r4Ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677708032; h=content-disposition:mime-version:message-id:subject:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=5UqvlWlhOhnkbtBsagx1SCP/KVKC4OZDG83r0E+nJf8=; b=e0fXIZ4kA01wSyvrSXDKkTmGVWpoyMTzoKf0P4zl8FoPtVoIRIgJsqoX0/1ZchrSLO abJsOYmovtemS+pOIOvQFImPjEY7u9AZeLy23grcgvP3WQn1GyN1bas25U7jgQ3bBCP+ N+CFg4VYN6oDZifRmICbP+kEMLsQciBAvsQTgCFLY9X4+pcf+b9VwoSmz0JzrQJstJAf hGrAf9s/4HUeUjqgWMwYnlb9cvSxi9WGekOp8ztK4le29KLsnRv/NoDKwcvf1hTY5h3t TIYiRgAZvAh7Qt9FLUH/b6sfqHR6ez5YVBKzBedclw5XBrdKmBmjYN/tLMoPJgcDwZM7 SLgg== X-Gm-Message-State: AO0yUKXboOyBoQedcYl6qgo3xnwg6xAZ8SCCbK0Qg08713xhnmLT32NO J0MI/cOCOrVnK/rIBoXevyAT96f/+tU= X-Google-Smtp-Source: AK7set+PdyHtRAUtGDyVSjqBxYostJAa3nQBdhHpxf7xhYGmxu2Z4N352plGWnGngLab79a3x3iCZA== X-Received: by 2002:a05:6a20:2449:b0:cc:c3f7:916b with SMTP id t9-20020a056a20244900b000ccc3f7916bmr9867681pzc.0.1677708031906; Wed, 01 Mar 2023 14:00:31 -0800 (PST) Received: from squeak.grove.modra.org ([2406:3400:51d:8cc0:4d08:cebd:d73f:b794]) by smtp.gmail.com with ESMTPSA id w8-20020a63f508000000b004e28be19d1csm7843104pgh.32.2023.03.01.14.00.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Mar 2023 14:00:31 -0800 (PST) Received: by squeak.grove.modra.org (Postfix, from userid 1000) id 109301142C96; Thu, 2 Mar 2023 08:30:29 +1030 (ACDT) Date: Thu, 2 Mar 2023 08:30:29 +1030 From: Alan Modra To: binutils@sourceware.org Subject: Using .mri in assembly Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Spam-Status: No, score=-3034.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Changing mri mode between macro definition and use isn't good. This .macro x .endm .mri 1 x leads to a segfault. Fixed with the following patch, but I suppose what should really happen is that macros be marked as being mri mode when defined, and that determine whether the magic NARG parameter be supplied at expansion. Nobody has complained about this in 30 years so I'm not inclined to change gas behaviour to that extent. * macro.c (macro_expand): Don't segfault in mri mode if NARG formal isn't found. diff --git a/gas/macro.c b/gas/macro.c index afcd48b3a88..74a1317cb11 100644 --- a/gas/macro.c +++ b/gas/macro.c @@ -1221,13 +1221,14 @@ macro_expand (size_t idx, sb *in, macro_entry *m, sb *out) if (macro_mri) { - char buffer[20]; - - sb_reset (&t); - sb_add_string (&t, macro_strip_at ? "$NARG" : "NARG"); - ptr = str_hash_find (m->formal_hash, sb_terminate (&t)); - sprintf (buffer, "%d", narg); - sb_add_string (&ptr->actual, buffer); + ptr = str_hash_find (m->formal_hash, + macro_strip_at ? "$NARG" : "NARG"); + if (ptr) + { + char buffer[20]; + sprintf (buffer, "%d", narg); + sb_add_string (&ptr->actual, buffer); + } } err = macro_expand_body (&m->sub, out, m->formals, m->formal_hash, m); -- Alan Modra Australia Development Lab, IBM