The 26-year-old joined the Gunners from Dinamo Zagreb in July 2007 but has been struggling with injuries during his time at Emirates Stadium.
Arsenal boss Arsene Wenger told the club’s official website: “We’re delighted that Eduardo has signed a new long-term contract with us.
“Eduardo is a special player with huge talent and natural goalscoring ability, and we’re all so happy that he has committed his future to Arsenal.
“We have also seen in his comeback from injury, Eduardo is a human being full of courage, bravery and commitment.
“His full recovery from this injury is a testament to Eduardo’s character. We all look forward to enjoying Eduardo’s performances in an Arsenal shirt for a long time to come.”